Spaces:
Sleeping
Sleeping
INFINA-RD
refactor: DI infrastructure, service decomposition, repository helpers, test suite
e066621 | import contextlib | |
| import io | |
| import traceback | |
| from dotenv import load_dotenv | |
| from fastapi import Body, FastAPI | |
| from fastapi.middleware.cors import CORSMiddleware | |
| from pydantic import BaseModel | |
| load_dotenv() | |
| class CodeExecutionRequest(BaseModel): | |
| code: str | |
| def _execute_python(code: str) -> dict[str, object]: | |
| stdout_buffer = io.StringIO() | |
| stderr_buffer = io.StringIO() | |
| try: | |
| with contextlib.redirect_stdout(stdout_buffer), contextlib.redirect_stderr(stderr_buffer): | |
| exec(code) | |
| except Exception: | |
| return { | |
| "stdout": stdout_buffer.getvalue(), | |
| "stderr": stderr_buffer.getvalue(), | |
| "error": traceback.format_exc(), | |
| "code": code, | |
| } | |
| return { | |
| "stdout": stdout_buffer.getvalue(), | |
| "stderr": stderr_buffer.getvalue(), | |
| "error": None, | |
| "code": code, | |
| } | |
| app = FastAPI( | |
| title="Infina Code Sandbox API", | |
| description="Bu API, gonderilen Python kodlarini calistiran sandbox ortami saglar.", | |
| version="1.0.0", | |
| docs_url="/swagger", | |
| ) | |
| # ------------------------ | |
| # CORS ayarları (tüm origin'lere izin) | |
| # ------------------------ | |
| app.add_middleware( | |
| CORSMiddleware, | |
| allow_origins=["*"], # tüm origin'lere izin | |
| allow_credentials=True, | |
| allow_methods=["*"], # tüm HTTP metotlarına izin | |
| allow_headers=["*"], # tüm header'lara izin | |
| ) | |
| async def root(): | |
| return {"message": "API calisiyor. Test icin /swagger veya /redoc adresini ziyaret edin."} | |
| async def execute_code(payload: CodeExecutionRequest): | |
| return _execute_python(payload.code) | |
| async def execute_code_raw(code: str = Body(..., media_type="text/plain", embed=False)): | |
| return _execute_python(code) | |
| if __name__ == "__main__": | |
| import uvicorn | |
| uvicorn.run(app, host="localhost", port=5556) | |