59 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/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
 |