File size: 4,120 Bytes
100c46f
 
 
 
 
 
 
 
 
 
 
ff4f388
100c46f
 
 
 
 
ff4f388
 
100c46f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
"""
Central API configuration and environment setup.
"""
import os
import requests
from typing import Dict, Tuple

class APIConfig:
    """Centralized API configuration and validation."""
    
    def __init__(self):
        self.foursquare_api_key = os.environ.get('FOURSQUARE_API_KEY')
        self.anthropic_api_key = os.environ.get('ANTHROPIC_API_KEY')
        
        # MCP Server configuration
        self.mcp_server_url = "https://srikanthnagelli-mcp-server.hf.space/gradio_api/mcp/sse"
        
        # Set environment if not already set and key is available
        if self.foursquare_api_key and not os.environ.get('FOURSQUARE_API_KEY'):
            os.environ['FOURSQUARE_API_KEY'] = self.foursquare_api_key
    
    def validate_apis(self) -> Dict[str, bool]:
        """Validate API keys and connectivity."""
        results = {}
        
        # Test Foursquare API
        if self.foursquare_api_key:
            try:
                url = "https://api.foursquare.com/v3/places/search"
                headers = {
                    "accept": "application/json",
                    "Authorization": self.foursquare_api_key
                }
                params = {"query": "test", "limit": 1}
                response = requests.get(url, headers=headers, params=params, timeout=5)
                results['foursquare'] = response.status_code == 200
            except Exception:
                results['foursquare'] = False
        else:
            results['foursquare'] = False
        
        # Check Anthropic API key existence
        results['anthropic'] = bool(self.anthropic_api_key)
        
        return results
    
    def print_status(self):
        """Print API configuration status."""
        print("\n🔧 API Configuration Status:")
        
        validation = self.validate_apis()
        
        if validation['foursquare']:
            print("✓ Foursquare API: Connected and working")
        else:
            print("⚠️ Foursquare API: Connection issues or invalid key")
        
        if validation['anthropic']:
            print("✓ Anthropic API Key: Configured")
        else:
            print("⚠️ Anthropic API Key: Not configured")
            print("ℹ️ Set environment variable: ANTHROPIC_API_KEY=your_key")

# Global configuration instance
api_config = APIConfig()

# Location coordinates for major cities
CITY_COORDINATES = {
    'seattle': '47.6062,-122.3321',
    'pike place': '47.6089,-122.3401',
    'downtown seattle': '47.6085,-122.3351',
    'new york': '40.7128,-74.0060',
    'san francisco': '37.7749,-122.4194',
    'los angeles': '34.0522,-118.2437',
    'chicago': '41.8781,-87.6298',
    'boston': '42.3601,-71.0589',
    'portland': '45.5155,-122.6789',
    'denver': '39.7392,-104.9903',
    'miami': '25.7617,-80.1918',
    'las vegas': '36.1699,-115.1398',
    'phoenix': '33.4484,-112.0740',
    'philadelphia': '39.9526,-75.1652',
    'houston': '29.7604,-95.3698',
    'dallas': '32.7767,-96.7970',
    'atlanta': '33.7490,-84.3880',
    'detroit': '42.3314,-83.0458',
    'orlando': '28.5383,-81.3792',
    'san diego': '32.7157,-117.1611',
    # Additional California cities
    'folsom': '38.6780,-121.1760',
    'sacramento': '38.5816,-121.4944',
    'san jose': '37.3382,-121.8863',
    'oakland': '37.8044,-122.2711',
    'fresno': '36.7378,-119.7871',
    'long beach': '33.7701,-118.1937',
    'anaheim': '33.8366,-117.9143',
    'riverside': '33.9533,-117.3962',
    'stockton': '37.9577,-121.2908',
    'bakersfield': '35.3733,-119.0187',
    # Additional major cities
    'austin': '30.2672,-97.7431',
    'nashville': '36.1627,-86.7816',
    'memphis': '35.1495,-90.0490',
    'milwaukee': '43.0389,-87.9065',
    'kansas city': '39.0997,-94.5786',
    'colorado springs': '38.8339,-104.8214',
    'virginia beach': '36.8529,-75.9780',
    'indianapolis': '39.7684,-86.1581',
    'charlotte': '35.2271,-80.8431',
    'jacksonville': '30.3322,-81.6557',
    'columbus': '39.9612,-82.9988',
    'fort worth': '32.7555,-97.3308',
    'san antonio': '29.4241,-98.4936',
    'el paso': '31.7619,-106.4850'
}