forked from OS-Copilot/OS-Copilot
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapi_server.py
More file actions
74 lines (59 loc) · 2.46 KB
/
api_server.py
File metadata and controls
74 lines (59 loc) · 2.46 KB
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
import os
from fastapi import FastAPI
from friday.core.server_config import ConfigManager
app = FastAPI()
# Import your services
from friday.api.python.interpreter import router as python_router
from friday.api.arxiv.arxiv import router as arxiv_router
from friday.api.bing.bing_service import router as bing_router
from friday.api.calculator.calculator import router as calculator_router
from friday.api.chemical.chemical import router as chemical_router
from friday.api.ppt.ppt import router as ppt_router
from friday.api.shell.shell import router as shell_router
from friday.api.database.database import router as db_router
from friday.api.wolfram_alpha.wolfram_alpha import router as wa_router
from friday.api.weather.weather import router as weather_router
from friday.api.google_calendar.calendar_service import router as calendar_router
from friday.api.gmail.gmail import router as gmail_router
from friday.api.markdown.markdown_service import router as markdown_router
from starlette.middleware.base import BaseHTTPMiddleware
from starlette.requests import Request
class LoggingMiddleware(BaseHTTPMiddleware):
async def dispatch(self, request: Request, call_next):
print(f"Incoming request: {request.method} {request.url}")
try:
response = await call_next(request)
except Exception as e:
print(f"Request error: {str(e)}")
raise e from None
else:
print(f"Outgoing response: {response.status_code}")
return response
app.add_middleware(LoggingMiddleware)
# Create a dictionary that maps service names to their routers
services = {
"python_executor": python_router,
"calculator": calculator_router,
"arxiv": arxiv_router,
"bing": bing_router,
"chemical": chemical_router,
"ppt": ppt_router,
"shell": shell_router,
"database": db_router,
"wolframalpha": wa_router,
"weather": weather_router,
"calendar": calendar_router,
"gmail": gmail_router,
"markdown": markdown_router
}
server_list = ["python_executor", "calculator","arxiv","bing","shell","ppt",
"database","wolframalpha","weather","calendar","gmail","markdown"]
# Include only the routers for the services listed in server_list
for service in server_list:
if service in services:
app.include_router(services[service])
# proxy_manager = ConfigManager()
# proxy_manager.apply_proxies()
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8079)