#!/bin/bash # glitch gate API Helper Script # Usage: source this file, then use the functions # Configuration - set these or export before sourcing GNOMMO_API_URL="${GNOMMO_API_URL:-http://localhost:3001}" # CONTENT_API_KEY should be set in environment # Check if API key is set check_api_key() { if [ -z "$CONTENT_API_KEY" ]; then echo "Error: CONTENT_API_KEY not set" echo "Run: export CONTENT_API_KEY=your-key-here" return 1 fi } # List all techs list_techs() { check_api_key || return 1 curl -s -H "Authorization: Bearer $CONTENT_API_KEY" \ "$GNOMMO_API_URL/api/content/techs" | jq } # List techs without gates (available for linking) list_available_techs() { check_api_key || return 1 curl -s -H "Authorization: Bearer $CONTENT_API_KEY" \ "$GNOMMO_API_URL/api/content/techs/available" | jq } # List all glitch gates list_gates() { check_api_key || return 1 curl -s -H "Authorization: Bearer $CONTENT_API_KEY" \ "$GNOMMO_API_URL/api/content/deglitch-gates" | jq } # Get a specific gate by ID get_gate() { check_api_key || return 1 local gate_id=$1 if [ -z "$gate_id" ]; then echo "Usage: get_gate " return 1 fi curl -s -H "Authorization: Bearer $CONTENT_API_KEY" \ "$GNOMMO_API_URL/api/content/deglitch-gates/$gate_id" | jq } # Create a gate from JSON file create_gate() { check_api_key || return 1 local json_file=$1 if [ -z "$json_file" ]; then echo "Usage: create_gate " return 1 fi if [ ! -f "$json_file" ]; then echo "Error: File not found: $json_file" return 1 fi curl -s -X POST \ -H "Authorization: Bearer $CONTENT_API_KEY" \ -H "Content-Type: application/json" \ -d @"$json_file" \ "$GNOMMO_API_URL/api/content/deglitch-gates" | jq } # Create a gate from JSON string create_gate_json() { check_api_key || return 1 local json_data=$1 if [ -z "$json_data" ]; then echo "Usage: create_gate_json ''" return 1 fi curl -s -X POST \ -H "Authorization: Bearer $CONTENT_API_KEY" \ -H "Content-Type: application/json" \ -d "$json_data" \ "$GNOMMO_API_URL/api/content/deglitch-gates" | jq } # Update a gate from JSON file update_gate() { check_api_key || return 1 local gate_id=$1 local json_file=$2 if [ -z "$gate_id" ] || [ -z "$json_file" ]; then echo "Usage: update_gate " return 1 fi if [ ! -f "$json_file" ]; then echo "Error: File not found: $json_file" return 1 fi curl -s -X PUT \ -H "Authorization: Bearer $CONTENT_API_KEY" \ -H "Content-Type: application/json" \ -d @"$json_file" \ "$GNOMMO_API_URL/api/content/deglitch-gates/$gate_id" | jq } # Delete a gate delete_gate() { check_api_key || return 1 local gate_id=$1 if [ -z "$gate_id" ]; then echo "Usage: delete_gate " return 1 fi read -p "Delete gate $gate_id? (y/N) " confirm if [ "$confirm" = "y" ] || [ "$confirm" = "Y" ]; then curl -s -X DELETE \ -H "Authorization: Bearer $CONTENT_API_KEY" \ "$GNOMMO_API_URL/api/content/deglitch-gates/$gate_id" | jq else echo "Cancelled" fi } # Print available commands deglitch_help() { echo "glitch gate API Commands:" echo "" echo " list_techs - List all techs" echo " list_available_techs - List techs without gates" echo " list_gates - List all glitch gates" echo " get_gate - Get gate details" echo " create_gate - Create gate from JSON file" echo " create_gate_json '' - Create gate from JSON string" echo " update_gate - Update gate from JSON file" echo " delete_gate - Delete a gate" echo "" echo "Configuration:" echo " GNOMMO_API_URL=$GNOMMO_API_URL" echo " CONTENT_API_KEY=$([ -n "$CONTENT_API_KEY" ] && echo "[set]" || echo "[not set]")" } echo "DEGLITCH API helper loaded. Run 'deglitch_help' for commands."