slink/shortlink

53 lines
1.2 KiB
Fish
Executable File

#!/usr/bin/fish
read pass < ~/.slink
set baseurl "https://heathens.club/u"
#set baseurl "http://localhost:8080"
function curl
command curl -s -H "Authentication:$pass" $argv
end
function list
for item in (curl "$baseurl/admin/list" | jq -r 'to_entries | .[] | "\(.key)|\(.value.url)"')
set item (string replace "|" " " $item)
echo -e $item
end
end
function delete -a short
printf "deleting %s\n" $short
set payload (jq -ncr --arg short $short '.url = $short' )
curl "$baseurl/admin/del" -d $payload
end
function prune
for link in (curl "$baseurl/admin/list" | jq -r 'to_entries | .[] | "\(.key)|\(.value.url)"')
set short (string split "|" $link)[1]
set url (string split "|" $link)[2]
curl -sI "$url" ^| grep "404"
and delete $short
or echo "leaving $short alone"
end
end
switch $argv[1]
case new
set payload (jq -ncr --arg url "$argv[2]" '.url = $url')
set link (curl "$baseurl/admin/create" -d $payload)
printf "%s\n" "$link"
case prune
prune
case list
list
case delete
delete $argv[2]
case "*"
printf "%s\n" "--- shortlink ---"
printf "%s\n" "new <link>"
printf "%s\n" "list"
printf "%s\n" "delete <shortcode>"
printf "%s\n" "prune"
end