53 lines
1.2 KiB
Fish
Executable File
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
|