#!/bin/bash # VIMS Photo Upload Script # Uploads photos to VIMS API set -e API_URL="${VIMS_API_URL:-http://localhost:3450}" # Colors RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' show_help() { echo "VIMS Photo Upload" echo "" echo "Usage:" echo " $0 -f -o -a " echo "" echo "Options:" echo " -f Photo file path" echo " -o Object ID (from created object)" echo " -a Angle: front, back, left, right, top, detail" echo " -z Zoomer ID (optional)" echo "" echo "Examples:" echo " $0 -f ~/photos/atm1.jpg -o abc-123 -a front" echo " $0 -f ~/photos/atm1.jpg -o abc-123 -a left -z zoomer-001" } # Parse arguments while getopts "f:o:a:z:h" opt; do case $opt in f) PHOTO="$OPTARG" ;; o) OBJECT_ID="$OPTARG" ;; a) ANGLE="$OPTARG" ;; z) ZOOMER_ID="$OPTARG" ;; h) show_help; exit 0 ;; *) show_help; exit 1 ;; esac done # Validate if [ -z "$PHOTO" ] || [ -z "$OBJECT_ID" ] || [ -z "$ANGLE" ]; then echo -e "${RED}Error: Missing required arguments${NC}" show_help exit 1 fi if [ ! -f "$PHOTO" ]; then echo -e "${RED}Error: File not found: $PHOTO${NC}" exit 1 fi echo -e "${YELLOW}Uploading photo to VIMS...${NC}" echo " File: $PHOTO" echo " Object: $OBJECT_ID" echo " Angle: $ANGLE" # Build curl command CURL_CMD="curl -s -X POST \"$API_URL/api/v1/observations\" \ -F \"images=@$PHOTO\" \ -F \"objectId=$OBJECT_ID\" \ -F \"angle=$ANGLE\"" if [ -n "$ZOOMER_ID" ]; then CURL_CMD="$CURL_CMD -F \"zoomerId=$ZOOMER_ID\"" fi # Upload RESPONSE=$(eval $CURL_CMD) # Check response if echo "$RESPONSE" | grep -q "error"; then echo -e "${RED}Upload failed:${NC}" echo "$RESPONSE" | python3 -m json.tool 2>/dev/null || echo "$RESPONSE" exit 1 else echo -e "${GREEN}✓ Upload successful!${NC}" echo "$RESPONSE" | python3 -m json.tool 2>/dev/null || echo "$RESPONSE" fi