#!/usr/bin/env bash

ntfy_username=""
ntfy_password=""
ntfy_token=""

help()
{
   echo "Options:"
   echo "-t     Set the title of a message."
   echo "-m     Your message."
   echo "-p     Notification priority, 1-5, 5 is the highest.  (Optional)"
   echo "-e     Choose emoji. (https://ntfy.sh/docs/emojis/?h=emo)"
   echo "-s     Set the token for a message from a file"
   echo "-u     specify url"
   echo "-h     Print this help."
   echo
   echo "If you want to show if the last command was successful or not, you can do something like this:"
   echo "yourcommand ; export le=$? ; /path/to/ntfy.sh"
   echo
}


while getopts "t:m:p:e:s:u:h" option; do
  case $option in
    t) ntfy_topic="$OPTARG";;
    m) ntfy_message="$OPTARG";;
    p) ntfy_prio="$OPTARG";;
    e) ntfy_emoji="$OPTARG";;
    s) ntfy_token="$(cat $OPTARG)";;
    u) ntfy_url="$OPTARG";;
    h) help
       exit;;
    \?)
       echo "Error: Invalid option"
       exit;;
  esac
done
shift $((OPTIND-1))

if [ -z "$ntfy_message" ]; then
  ntfy_message="Done"
fi

if [ "$ntfy_prio" == "1" ]; then
  ntfy_prio="min"
  ntfy_tag="white_small_square"
elif [ "$ntfy_prio" == "2" ]; then
  ntfy_prio="low"
  ntfy_tag="computer"
elif [ "$ntfy_prio" == "3" ]; then
  ntfy_prio="default"
  ntfy_tag="computer"
elif [ "$ntfy_prio" == "4" ]; then
  ntfy_prio="high"
  ntfy_tag="warning"
elif [ "$ntfy_prio" == "5" ]; then
  ntfy_prio="max"
  ntfy_tag="rotating_light"
else
  ntfy_prio="default"
  ntfy_tag="computer"
fi

if [ -n "$ntfy_emoji" ]; then
  ntfy_tag="$ntfy_emoji"
fi

if [ -n "$le" ]; then
  if [ "$le" == "0" ]; then
    ntfy_tag="heavy_check_mark"
  else
    ntfy_tag="x"
  fi
fi

if [ -z "$ntfy_topic" ]; then
  ntfy_topic="$HOSTNAME"
fi

if [[ -n $ntfy_password && -n $ntfy_token ]]; then
  echo "Use ntfy_username and ntfy_password OR ntfy_token"
  exit 1
elif [ -n "$ntfy_password" ]; then
  ntfy_base64=$( echo -n "$ntfy_username:$ntfy_password" | base64 )
  ntfy_auth="Authorization: Basic $ntfy_base64"
elif [ -n "$ntfy_token" ]; then
  ntfy_auth="Authorization: Bearer $ntfy_token"
else
  ntfy_auth=""
fi

curl \
    -X POST \
    -H "$ntfy_auth" \
    -H "Title: $ntfy_topic" \
    -H "Tags: $ntfy_tag" \
    -H "Priority: $ntfy_prio" \
    -d "$ntfy_message" \
    "$ntfy_url"