#!/usr/bin/env bash get_collections() { curl -H "Authorization: Bearer $LINKWARDEN_TOKEN" \ -H "Accept: application/json" \ "$LINKWARDEN_URL/api/v1/collections" 2>/dev/null \ | jq -r '.response | map_values(.name)[]' } get_collection_id() { curl -H "Authorization: Bearer $LINKWARDEN_TOKEN" \ -H "Accept: application/json" \ "$LINKWARDEN_URL/api/v1/collections" 2>/dev/null \ | jq -r --arg c "$1" '.response[] | select(.name==$c).id' } collection=$(get_collections | $DMENU -p "Collection: ") url=$QUTE_URL name=$(echo "$QUTE_TITLE" | $DMENU -p "Title: ") if [ -z "$url" ] || [ -z "$name" ] || [ -z "$collection" ] then echo "message-error \"Failed to save link: Missing required fields\"" >> "$QUTE_FIFO" exit 0 fi payload=$(jq -n \ --arg u "$url" \ --arg n "$name" \ --arg cn "$collection" \ --argjson ci "$(get_collection_id $collection)" \ '{ url: $u, name: $n, collection: { name: $cn, id: $ci }, tags: [] }') echo "$payload" > /tmp/linkwarden-payload.json echo "$(get_collection_id "Werbung")" >> /tmp/linkwarden-payload.json response=$(curl -sS --fail-with-body \ -H "Authorization: Bearer $LINKWARDEN_TOKEN" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -X POST \ -d "$payload" \ "$LINKWARDEN_URL/api/v1/links" 2>&1) code="$?" if [ "$code" -ne 0 ] then response=$(echo "$response" | sed 's/"/\\"/g' | sed 's/$/ - /g' | tr -d '\n' | sed 's/ - $//g') echo "message-error \"Failed to save link: $response\"" >> "$QUTE_FIFO" fi