#!/bin/sh
FILE="$1"

qr_code () {
[ -n "$1" ] &&
    ZBARCMD="zbarimg -q $1" ||
    ZBARCMD="zbarcam -q"

$ZBARCMD | while read line ; do
    printf '%s\n' "$line"
    check="${line#*:}" ; check="${check%%:*}"

    case "$check" in
        "BEGIN") multiline=1 ;;
        "VCARD") multiline= ;;
    esac

    [ "$multiline" != 1 ] &&
        pkill zbarcam &&
        return 0

done
}

QRCODE="$(qr_code "$FILE" 2>/dev/null)"
QRCODE="${QRCODE#*:}"
QRTYPE="${QRCODE%%:*}"

case "$QRTYPE" in 
    "http"|"https"|"gopher"|"gemini"|"ftp"|"ftps"|"sftp"|"ssh"|"git"|"www"|"magnet"|"xmpp"|"mailto"|"nc")
        printf '%s\n' "$QRCODE"
        printf '%s' "$QRCODE" | xsel -ib
        break ;;

    "WIFI")
        SSID="${QRCODE##*S:}" ; SSID="${SSID%%;[A-Za-z]:*}"
        PASSW="${QRCODE##*P:}" ; PASSW="${PASSW%%;[A-Za-z]:*}"
        wpa_passphrase "$SSID" "$PASSW"
        break ;;

    "BEGIN")
        printf '%s\n' "$QRCODE"
        printf '%s' "$QRCODE" | contact
        break ;;

    *)
        printf '%s\n' "$QRCODE"
        break ;;
esac