From 01ed6b9248efb31fb3ffc062d114b326b2fe0a91 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Mon, 16 Dec 2024 06:36:02 -0500 Subject: [PATCH] [+] Solver server --- solver/solver_server.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 solver/solver_server.py diff --git a/solver/solver_server.py b/solver/solver_server.py new file mode 100644 index 0000000..6b08998 --- /dev/null +++ b/solver/solver_server.py @@ -0,0 +1,38 @@ +import uvicorn +from subprocess import check_output +from fastapi import FastAPI, Request +from fastapi.middleware.cors import CORSMiddleware +from pathlib import Path + + +app = FastAPI() +src = Path(__file__).parent + +origins = ["*"] + +app.add_middleware( + CORSMiddleware, + allow_origins=origins, + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) + + +@app.post("/") +async def input_request(request: Request): + body = (await request.body()).decode().replace("\r\n", "\n") + + # Write body to a file + tf = src / "input.txt" + tf.write_text(body) + + # Run the solver (example: ./slsolver mypuzzle.slk) + # Solver is https://github.com/davidjosepha/slitherlink + solver_path = src / "slsolver" + output = check_output([solver_path, str(tf)], cwd=src).decode() + return output + + +if __name__ == '__main__': + uvicorn.run(app, host="0.0.0.0", port=8000)