Spaces:
Sleeping
Sleeping
| import requests | |
| from fastapi import FastAPI | |
| from fastapi.middleware.cors import CORSMiddleware | |
| # Initialize the FastAPI app | |
| app = FastAPI() | |
| # Configure CORS middleware to allow requests from any origin | |
| # This is the crucial step that solves the browser security issue | |
| app.add_middleware( | |
| CORSMiddleware, | |
| allow_origins=["*"], # Allows all origins | |
| allow_credentials=True, | |
| allow_methods=["*"], # Allows all methods | |
| allow_headers=["*"], # Allows all headers | |
| ) | |
| def get_depth_data(panoid: str): | |
| """ | |
| This endpoint fetches the depth data from Google's internal API. | |
| It takes a panorama ID as a query parameter. | |
| """ | |
| if not panoid: | |
| return {"error": "A 'panoid' query parameter is required."} | |
| # The target URL for Google's undocumented API | |
| url = f"https://maps.google.com/cbk?output=json&v=4&dm=1&panoid={panoid}" | |
| print(f"Proxying request for panoid: {panoid}") | |
| try: | |
| # Make the server-to-server request to Google | |
| response = requests.get(url) | |
| response.raise_for_status() # Raise an exception for bad status codes (4xx or 5xx) | |
| # Return the JSON data from Google's response | |
| return response.json() | |
| except requests.exceptions.RequestException as e: | |
| # Handle potential network errors or bad responses from Google | |
| return {"error": f"Failed to fetch data from Google: {e}"} | |
| # A simple root endpoint to confirm the server is running | |
| def read_root(): | |
| return {"message": "Street View Depth Data Proxy is running."} |