garvitcpp's picture
Upload 27 files
28df1e8 verified
from fastapi import FastAPI, Depends, HTTPException, status
from fastapi.middleware.cors import CORSMiddleware
from fastapi.security import APIKeyHeader
import os
import uvicorn
from typing import Optional
from dotenv import load_dotenv
load_dotenv()
API_TOKEN = os.getenv("API_ACCESS_TOKEN")
if not API_TOKEN:
print("WARNING: API_ACCESS_TOKEN not set. Generating a random token.")
import secrets
API_TOKEN = secrets.token_urlsafe(32)
print(f"Generated token: {API_TOKEN}")
api_key_header = APIKeyHeader(name="X-API-Token", auto_error=False)
api_key_query = "token"
async def verify_token(
api_key_header: str = Depends(api_key_header),
token: Optional[str] = None,
) -> bool:
if api_key_header == API_TOKEN:
return True
if token == API_TOKEN:
return True
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Invalid or missing API token",
headers={"WWW-Authenticate": "APIKey"},
)
app = FastAPI(
title="Hotel Image API",
description="API for retrieving hotel images with Google Search fallback"
)
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
from api.routes.hotel_routes import router as hotel_router
from api.routes.system_routes import router as system_router
app.include_router(system_router)
app.include_router(hotel_router, dependencies=[Depends(verify_token)])
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=7860)