#!/bin/bash # Dubai Analytics Platform - API User Setup Script # This script helps you register a new user and get your API key set -e BASE_URL="http://localhost:8000/api/v1" echo "๐Ÿข Dubai Analytics Platform - API Setup" echo "========================================" echo "" # Check if curl is installed if ! command -v curl &> /dev/null; then echo "โŒ Error: curl is not installed. Please install curl first." exit 1 fi # Check if jq is installed if ! command -v jq &> /dev/null; then echo "โš ๏ธ Warning: jq is not installed. JSON responses will not be formatted." echo " Install jq for better output formatting: sudo apt-get install jq" echo "" fi # Function to format JSON output format_json() { if command -v jq &> /dev/null; then jq '.' else cat fi } # Function to register a new user register_user() { echo "๐Ÿ“ User Registration" echo "-------------------" read -p "Enter username: " username read -p "Enter email: " email read -s -p "Enter password: " password echo "" read -p "Enter first name: " first_name read -p "Enter last name: " last_name read -p "Enter company name: " company_name echo "" echo "๐Ÿ”„ Registering user..." response=$(curl -s -X POST "$BASE_URL/auth/register/" \ -H "Content-Type: application/json" \ -d "{ \"username\": \"$username\", \"email\": \"$email\", \"password\": \"$password\", \"first_name\": \"$first_name\", \"last_name\": \"$last_name\", \"company_name\": \"$company_name\" }") if echo "$response" | format_json | grep -q "User created successfully"; then echo "โœ… User registered successfully!" echo "" # Extract API key from response api_key=$(echo "$response" | grep -o '"api_key":"[^"]*"' | cut -d'"' -f4) if [ -n "$api_key" ]; then echo "๐Ÿ”‘ Your API Key: $api_key" echo "" echo "๐Ÿ“‹ Save this API key securely! You'll need it for all API requests." echo "" echo "๐Ÿงช Test your API key:" echo "curl -X GET \"$BASE_URL/analytics/broker-stats/\" \\" echo " -H \"X-API-Key: $api_key\"" echo "" else echo "โŒ Error: Could not extract API key from response" echo "Response: $response" fi # Extract JWT token for additional testing access_token=$(echo "$response" | grep -o '"access":"[^"]*"' | cut -d'"' -f4) if [ -n "$access_token" ]; then echo "๐Ÿ” Your JWT Token (for web interface): $access_token" echo "" fi else echo "โŒ Registration failed!" echo "Response: $response" | format_json exit 1 fi } # Function to test API key test_api_key() { echo "๐Ÿงช API Key Testing" echo "-----------------" read -p "Enter your API key: " api_key if [ -z "$api_key" ]; then echo "โŒ API key cannot be empty" return 1 fi echo "๐Ÿ”„ Testing API key with broker statistics endpoint..." response=$(curl -s -X GET "$BASE_URL/analytics/broker-stats/" \ -H "X-API-Key: $api_key") if echo "$response" | grep -q "gender_distribution"; then echo "โœ… API key is working correctly!" echo "" echo "๐Ÿ“Š Sample response:" echo "$response" | format_json echo "" else echo "โŒ API key test failed!" echo "Response: $response" | format_json echo "" echo "Common issues:" echo "- Make sure the API key is correct" echo "- Make sure the server is running on $BASE_URL" echo "- Check if your account has API access enabled" fi } # Function to show API examples show_examples() { echo "๐Ÿ“š API Usage Examples" echo "-------------------" echo "" read -p "Enter your API key: " api_key if [ -z "$api_key" ]; then echo "โŒ API key cannot be empty" return 1 fi echo "๐Ÿ”— Here are some example API calls you can make:" echo "" echo "1. Get Broker Statistics:" echo "curl -X GET \"$BASE_URL/analytics/broker-stats/\" \\" echo " -H \"X-API-Key: $api_key\"" echo "" echo "2. Get Project Statistics:" echo "curl -X GET \"$BASE_URL/analytics/project-stats/\" \\" echo " -H \"X-API-Key: $api_key\"" echo "" echo "3. Get Time Series Data (2025):" echo "curl -X GET \"$BASE_URL/analytics/time-series-data/?start_date=2025-01-01&end_date=2025-12-31&group_by=month\" \\" echo " -H \"X-API-Key: $api_key\"" echo "" echo "4. Get Transaction Summary:" echo "curl -X GET \"$BASE_URL/analytics/transaction-summary/?start_date=2025-01-01&end_date=2025-12-31\" \\" echo " -H \"X-API-Key: $api_key\"" echo "" echo "5. Get Area Statistics:" echo "curl -X GET \"$BASE_URL/analytics/area-statistics/?start_date=2025-01-01&end_date=2025-12-31&limit=10\" \\" echo " -H \"X-API-Key: $api_key\"" echo "" } # Main menu while true; do echo "What would you like to do?" echo "1. Register a new user and get API key" echo "2. Test existing API key" echo "3. Show API usage examples" echo "4. Exit" echo "" read -p "Enter your choice (1-4): " choice case $choice in 1) register_user ;; 2) test_api_key ;; 3) show_examples ;; 4) echo "๐Ÿ‘‹ Goodbye!" exit 0 ;; *) echo "โŒ Invalid choice. Please enter 1, 2, 3, or 4." ;; esac echo "" echo "Press Enter to continue..." read echo "" done