Skip to content

Commit 061eec9

Browse files
authored
Add ephemeral server (#265)
1 parent c084cd4 commit 061eec9

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import logging
2+
import tempfile
3+
4+
from fastapi import FastAPI
5+
6+
from codegen.runner.models.apis import (
7+
RUN_ON_STRING_ENDPOINT,
8+
GetRunOnStringRequest,
9+
GetRunOnStringResult,
10+
)
11+
from codegen.runner.sandbox.executor import SandboxExecutor
12+
from codegen.sdk.codebase.factory.get_session import get_codebase_session
13+
from codegen.sdk.enums import ProgrammingLanguage
14+
from codegen.shared.compilation.string_to_code import create_execute_function_from_codeblock
15+
16+
logger = logging.getLogger(__name__)
17+
app = FastAPI()
18+
19+
20+
@app.post(RUN_ON_STRING_ENDPOINT)
21+
async def run_on_string(request: GetRunOnStringRequest) -> GetRunOnStringResult:
22+
logger.info(f"====[ run_on_string ]====\n> Codemod source: {request.codemod_source}\n> Input: {request.files}\n> Language: {request.language}\n")
23+
language = ProgrammingLanguage(request.language.upper())
24+
with get_codebase_session(tmpdir=tempfile.mkdtemp(), files=request.files, programming_language=language) as codebase:
25+
executor = SandboxExecutor(codebase)
26+
code_to_exec = create_execute_function_from_codeblock(codeblock=request.codemod_source)
27+
result = await executor.execute(code_to_exec)
28+
logger.info(f"Result: {result}")
29+
return GetRunOnStringResult(result=result)

0 commit comments

Comments
 (0)