#!/usr/bin/env sh

# Description: Selections are uploaded using Firefox Send
#              For single files:
#              Upload to Firefox Send if ffsend is found, else
#              Paste contents of a text a file http://ix.io
#              Upload a binary file to file.io
#
# Dependencies: ffsend (https://github.com/timvisee/ffsend), curl, jq, tr
#
# Note: Binary file set to expire after a week
#
# Shell: POSIX compliant
# Author: Arun Prakash Jana

selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection}
if [ -s "$selection" ]; then
    if type ffsend >/dev/null 2>&1; then
      # File name will be randomized foo.tar
      xargs -0 < "$selection" ffsend u
    else
      printf "ffsend is required to upload selection."
    fi

    # Clear selection
    printf "-" > "$NNN_PIPE"
else
    if [ -n "$1" ] && [ -s "$1" ]; then
	if type ffsend >/dev/null 2>&1; then
	    ffsend -fiq u "$1"
	elif [ "$(mimetype --output-format %m "$1" | awk -F '/' '{print $1}')" = "text" ]; then
	    curl -F "f:1=@$1" ix.io
	else
	    # Upload the file, show the download link and wait till user presses any key
	    curl -s -F "file=@$1" https://file.io/?expires=1w | jq '.link' | tr -d '"'

	    # To write download link to "$1".loc and exit
	    # curl -s -F "file=@$1" https://file.io/?expires=1w -o `basename "$1"`.loc
	fi
    else
	printf "empty file!"
    fi
fi

read -r _