#!/bin/bash # Check if client ID parameter is provided if [ -z "$1" ]; then echo "Usage: $0 " echo "Example: $0 test_client_1758574881" exit 1 fi CLIENT_ID="$1" # API configuration # local host version of the test #BASE_URL="http://localhost:8080" # cloud version http://queryo-query-rtxkppcxpjsb-742555588.us-east-2.elb.amazonaws.com/ BASE_URL="http://queryo-query-rtxkppcxpjsb-742555588.us-east-2.elb.amazonaws.com" ENDPOINT="/client/${CLIENT_ID}/document" # Color codes for output GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[0;33m' BLUE='\033[0;34m' CYAN='\033[0;36m' NC='\033[0m' # No Color echo "================================================" echo -e "${BLUE}Document List for Client${NC}" echo "================================================" echo -e "Client ID: ${YELLOW}$CLIENT_ID${NC}" echo -e "API Endpoint: ${CYAN}${BASE_URL}${ENDPOINT}${NC}" echo "================================================" echo "" # Make API request echo -e "${BLUE}Fetching documents...${NC}" RESPONSE=$(curl -s -w "\n%{http_code}" "${BASE_URL}${ENDPOINT}") # Extract HTTP status code (last line) HTTP_STATUS=$(echo "$RESPONSE" | tail -n1) # Extract response body (all lines except last) - using sed for portability RESPONSE_BODY=$(echo "$RESPONSE" | sed '$d') # Check HTTP status if [ "$HTTP_STATUS" -eq 200 ]; then echo -e "${GREEN}✓ API Request Successful${NC}" echo "" # Check if jq is available for JSON parsing if command -v jq >/dev/null 2>&1; then # Parse and display with jq DOCUMENT_COUNT=$(echo "$RESPONSE_BODY" | jq '. | length' 2>/dev/null || echo "0") if [ -z "$DOCUMENT_COUNT" ] || [ "$DOCUMENT_COUNT" = "null" ]; then DOCUMENT_COUNT=0 fi if [ "$DOCUMENT_COUNT" -eq 0 ]; then echo -e "${YELLOW}No documents found for client: $CLIENT_ID${NC}" else echo -e "${GREEN}Found $DOCUMENT_COUNT document(s)${NC}" echo "" echo -e "${BLUE}Document Details:${NC}" echo "------------------------------------------------" # Display each document with formatting echo "$RESPONSE_BODY" | jq -r '.[] | "Document ID: \(.id)\n" + "Hash: \(.hash)\n" + "---"' fi else # Fallback to basic formatting without jq echo -e "${YELLOW}Note: jq not found, displaying raw JSON response${NC}" echo "" echo -e "${BLUE}Raw Response:${NC}" echo "$RESPONSE_BODY" | python3 -m json.tool 2>/dev/null || echo "$RESPONSE_BODY" fi elif [ "$HTTP_STATUS" -eq 401 ]; then echo -e "${RED}✗ Unauthorized (401)${NC}" echo -e "${YELLOW}Authentication required. This endpoint requires JWT authentication.${NC}" echo "" echo -e "${BLUE}Response:${NC}" echo "$RESPONSE_BODY" elif [ "$HTTP_STATUS" -eq 404 ]; then echo -e "${RED}✗ Not Found (404)${NC}" echo -e "${YELLOW}Client '$CLIENT_ID' not found or no documents exist.${NC}" echo "" echo -e "${BLUE}Response:${NC}" echo "$RESPONSE_BODY" else echo -e "${RED}✗ API Request Failed (HTTP $HTTP_STATUS)${NC}" echo "" echo -e "${BLUE}Response:${NC}" echo "$RESPONSE_BODY" fi echo "" echo "================================================" # Exit with appropriate code if [ "$HTTP_STATUS" -eq 200 ]; then exit 0 else exit 1 fi