#!/bin/sh # # Script to fetch all approved webmentions from webmentiond as a big json response. # Uses POSIX and cURL in CI, also uses any pass/pash-compatible pwmngr otherwise # The response is cached for 90 minutes. set -e -u auth_url='https://seirdy.one/webmentions/authenticate/access-key' webmentions_url='https://seirdy.one/webmentions/manage/mentions?limit=9999&status=approved' webmentions_file="$(realpath data/webmentions.json)" # just a little curl wrapper I use on seirdy.one alias ccurl='curl --proto "=https" --proto-default https --tlsv1.3 --cert-status' # use a long-lived key (password) to fetch a short-lived bearer token. key() { set +u if [ -n "$BUILD_SUBMITTER" ]; then cat ~/.webmentiond-key else pash show webmentiond-ci-key fi set -u } token() { ccurl -sX POST "$auth_url" -d "key=$(key)" } # use that token to fetch all webmentions fetch_webmentions() { ccurl --compressed -H "Authorization: Bearer $(token)" "$webmentions_url" } # fetch webmentions if we don't have a fresh copy already. if [ -f "$webmentions_file" ] \ && [ "$(find "$webmentions_file" -mmin +90)" == "" ]; then echo 'Using cached webmentions' else echo 'Fetching webmentions' fetch_webmentions >"$webmentions_file" fi