Spaces:
Runtime error
Runtime error
# app/main.py | |
import os | |
import logging | |
from fastapi import FastAPI, HTTPException | |
from fastapi.middleware.cors import CORSMiddleware | |
from pydantic import BaseModel | |
from .config import Config | |
from .agent import GmailAgent | |
# Set up logging | |
logging.basicConfig(level=logging.DEBUG) | |
logger = logging.getLogger(__name__) | |
# Log environment variables | |
logger.debug(f"GOOGLE_API_KEY: {os.getenv('GOOGLE_API_KEY')}") | |
logger.debug(f"COMPOSIO_API_KEY: {os.getenv('COMPOSIO_API_KEY')}") | |
# Rest of your existing code... | |
app = FastAPI( | |
title="Gmail Agent API", | |
description="API for Gmail management using Gemini and Composio", | |
version="1.0.0" | |
) | |
# Add CORS middleware | |
app.add_middleware( | |
CORSMiddleware, | |
allow_origins=Config.ALLOWED_ORIGINS, | |
allow_credentials=True, | |
allow_methods=["*"], | |
allow_headers=["*"], | |
) | |
# Initialize Gmail Agent | |
gmail_agent = GmailAgent( | |
google_api_key=Config.GOOGLE_API_KEY, | |
composio_api_key=Config.COMPOSIO_API_KEY | |
) | |
class EmailRequest(BaseModel): | |
thread_id: str | |
email_content: str | |
sender_email: str | |
async def root(): | |
""" | |
Root endpoint that provides API information and health check | |
""" | |
return { | |
"status": "online", | |
"version": __version__, | |
"name": "Gmail Agent API", | |
"description": "Gmail Agent API using Gemini and Composio" | |
} | |
async def health_check(): | |
return {"status": "healthy"} | |
async def get_auth_url(): | |
try: | |
auth_url = gmail_agent.authenticate_gmail() | |
return {"auth_url": auth_url} | |
except Exception as e: | |
raise HTTPException(status_code=500, detail=str(e)) | |
async def process_email(request: EmailRequest): | |
try: | |
response = await gmail_agent.process_email( | |
thread_id=request.thread_id, | |
email_content=request.email_content, | |
sender_email=request.sender_email | |
) | |
return {"response": response} | |
except Exception as e: | |
raise HTTPException(status_code=500, detail=str(e)) |