Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI, UploadFile, File, Form, HTTPException, Header | |
| from fastapi.middleware.cors import CORSMiddleware | |
| from fastapi.responses import JSONResponse | |
| import os | |
| import shutil | |
| import tempfile | |
| from typing import Optional | |
| import logging | |
| from datetime import datetime | |
| # Configure logging | |
| logging.basicConfig(level=logging.INFO) | |
| logger = logging.getLogger(__name__) | |
| app = FastAPI(title="vBot API", description="API for processing call recordings") | |
| # Add CORS middleware | |
| app.add_middleware( | |
| CORSMiddleware, | |
| allow_origins=["*"], | |
| allow_credentials=True, | |
| allow_methods=["*"], | |
| allow_headers=["*"], | |
| ) | |
| # API key validation | |
| API_KEY = os.getenv("API_KEY", "your_api_key_here") | |
| def verify_api_key(x_api_key: str = Header(None)): | |
| if not x_api_key or x_api_key != API_KEY: | |
| raise HTTPException(status_code=401, detail="Invalid API key") | |
| async def process_call( | |
| file: UploadFile = File(...), | |
| caller_number: str = Form(...), | |
| called_number: str = Form(...), | |
| x_api_key: str = Header(None) | |
| ): | |
| try: | |
| # Verify API key | |
| verify_api_key(x_api_key) | |
| # Create temporary directory for processing | |
| with tempfile.TemporaryDirectory() as temp_dir: | |
| # Save uploaded file | |
| file_path = os.path.join(temp_dir, file.filename) | |
| with open(file_path, "wb") as buffer: | |
| shutil.copyfileobj(file.file, buffer) | |
| # Process the file (placeholder for actual processing) | |
| # TODO: Add actual processing logic here | |
| return JSONResponse( | |
| status_code=200, | |
| content={ | |
| "status": "success", | |
| "message": "Call processed successfully", | |
| "timestamp": datetime.now().isoformat(), | |
| "caller_number": caller_number, | |
| "called_number": called_number, | |
| "file_name": file.filename | |
| } | |
| ) | |
| except Exception as e: | |
| logger.error(f"Error processing call: {str(e)}") | |
| raise HTTPException(status_code=500, detail=str(e)) | |
| async def root(): | |
| return {"message": "vBot API is running"} | |
| if __name__ == "__main__": | |
| import uvicorn | |
| uvicorn.run(app, host="0.0.0.0", port=7860) |