summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2021-02-21 21:42:40 -0500
committerJune McEnroe <june@causal.agency>2021-02-21 21:42:40 -0500
commitf733839fd1cd99dac0123d5657709da4821eb26d (patch)
tree84825e6ca39d0cacb97a011f2c9dcce1f77be4c1
parentPublish "Unpasswords" (diff)
downloadsrc-f733839fd1cd99dac0123d5657709da4821eb26d.tar.gz
src-f733839fd1cd99dac0123d5657709da4821eb26d.zip
Add Liberapay to sup
Don't actually need to set a password for this one, but I can
automate using the email link to log in.
-rw-r--r--bin/man1/sup.13
-rw-r--r--bin/sup.sh22
2 files changed, 24 insertions, 1 deletions
diff --git a/bin/man1/sup.1 b/bin/man1/sup.1
index 10dac5d9..ba4fe3fd 100644
--- a/bin/man1/sup.1
+++ b/bin/man1/sup.1
@@ -1,4 +1,4 @@
-.Dd February 17, 2021
+.Dd February 21, 2021
 .Dt SUP 1
 .Os
 .
@@ -37,5 +37,6 @@ and
 The following services are supported:
 .Cm discogs ,
 .Cm freebsdbugzilla ,
+.Cm liberapay ,
 .Cm lobsters ,
 .Cm tildenews .
diff --git a/bin/sup.sh b/bin/sup.sh
index b8af9fc1..fb6ad4bf 100644
--- a/bin/sup.sh
+++ b/bin/sup.sh
@@ -77,6 +77,28 @@ discogs() {
 	open 'https://discogs.com/login'
 }
 
+liberapay() {
+	echo 'Fetching CSRF token...'
+	csrf=$(
+		curl -Ss 'https://liberapay.com/sign-in' |
+		sed -n 's/.*name="csrf_token".*value="\([^"]*\)".*/\1/p'
+	)
+	echo 'Submitting form...'
+	curl -Ss -X POST \
+		-b "csrf_token=${csrf}" -F "csrf_token=${csrf}" \
+		-F "log-in.id=${email}" \
+		'https://liberapay.com/sign-in' \
+		>/dev/null
+	echo 'Waiting for email...'
+	url=$(
+		git fetch-email -i -M Trash \
+			-F 'support@liberapay.com' -T "${email}" \
+			-S 'Log in to Liberapay' |
+		grep -m 1 '^https://liberapay\.com/'
+	)
+	open "${url}"
+}
+
 lobsters() {
 	: ${lobstersBase:=https://lobste.rs}
 	: ${lobstersFrom:=nobody@lobste.rs}