summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rwxr-xr-xdata_handler17
-rwxr-xr-xunshorten.sh18
3 files changed, 37 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index 3910625..1a347ca 100644
--- a/Makefile
+++ b/Makefile
@@ -40,6 +40,8 @@ install: all
install -t $(PREFIX)/bin copy_start_nevermind.sh
install -t $(PREFIX)/bin choose
install -t $(PREFIX)/bin query_param
+ install -t $(PREFIX)/bin data_handler
+ install -t $(PREFIX)/bin unshorten.sh
install -t $(PREFIX)/bin shorten
chgrp shorten $(PREFIX)/bin/shorten
chmod g+s $(PREFIX)/bin/shorten
diff --git a/data_handler b/data_handler
new file mode 100755
index 0000000..b3936be
--- /dev/null
+++ b/data_handler
@@ -0,0 +1,17 @@
+#!/bin/sh
+hash="$(printf "$1" | sha256sum | cut '-d ' -f1)"
+mime_data="$(printf "%s\n" "$1" | cut -d, -f1)"
+data="$(printf "%s\n" "$1" | cut -d, -f2-)"
+#echo $mime_data
+is_base64="$(printf "%s\n" "$mime_data" | tr ';' '\n' | grep '^base64$')"
+media_type="$(printf "%s\n" "$mime_data" | tr ';' '\n' | head -n1)"
+### what are we going to do with this file?
+mkdir -p ~/.local/var/cache/data
+printf "%s\n" "$data" \
+ | if [ "$is_base64" ];then
+ base64 -d
+ else
+ uriunescape
+ fi \
+ > ~/.local/var/cache/data/$hash
+uristart "file:///home/epoch/.local/var/cache/data/$hash?mime-type=$media_type"
diff --git a/unshorten.sh b/unshorten.sh
new file mode 100755
index 0000000..8a3b49e
--- /dev/null
+++ b/unshorten.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+uri="$1"
+path="$(printf '%s\n' "$uri" | uricut -p)"
+scheme="$(printf '%s\n' "$uri" | uricut -s)"
+domain="$(printf '%s\n' "$uri" | uricut -d)"
+port="$(printf '%s\n' "$uri" | uricut -P)"
+
+case "$scheme" in
+ http*)
+ curl -Lsi "$1" | grep -i ^Location: | head -n1 | tr -s ' ' | tr -d '\r' | cut '-d ' -f2- | sed 's|^/|'"$scheme"'://'"$domain"'/|g'
+ ;;
+ gemini)
+ gemini-get "$1" | head -n1 | sed 's/^3[0-9] //g'
+ ;;
+ *)
+ printf "dunno how to handle this type of URI\n"
+ ;;
+esac