|
|
@@ -1,7 +1,12 @@
|
|
|
+# https://fastapi.tiangolo.com/tutorial/body-multiple-params/#singular-values-in-body
|
|
|
+from pathlib import Path
|
|
|
from typing import Any
|
|
|
+import magic
|
|
|
+import arklog
|
|
|
from fastapi import APIRouter, Query, Request, Response
|
|
|
from fastapi.responses import JSONResponse
|
|
|
|
|
|
+
|
|
|
class MockRouter(APIRouter):
|
|
|
""""""
|
|
|
|
|
|
@@ -12,21 +17,39 @@ class MockRouter(APIRouter):
|
|
|
self.configuration = configuration
|
|
|
super().__init__(*args, **kwargs)
|
|
|
|
|
|
- # Make this a put
|
|
|
@self.get("/")
|
|
|
async def root_mock(request: Request, query: str | None = Query(None)) -> Response:
|
|
|
- """
|
|
|
- Example request response for a simulated activity.
|
|
|
- """
|
|
|
- match query.lower():
|
|
|
- case "error":
|
|
|
- return JSONResponse(status_code=400, content={"port": "error"})
|
|
|
- case "get":
|
|
|
- return JSONResponse(status_code=200, content={"port": "ok"})
|
|
|
+ """Example request response for a simulated activity."""
|
|
|
+ if query:
|
|
|
+ match query.lower():
|
|
|
+ case "error":
|
|
|
+ return JSONResponse(status_code=400, content={"ctrl": "error"})
|
|
|
+ case "get":
|
|
|
+ return JSONResponse(status_code=200, content={"ctrl": "ok"})
|
|
|
+
|
|
|
+ body = await request.json()
|
|
|
+ control = body.get("ctrl")
|
|
|
+ arklog.debug(control)
|
|
|
+ content = body.get("input").get("din").get("content")
|
|
|
+ file_path = Path(__file__).parent.parent / Path("data/mock_requirements.txt")
|
|
|
+ requirements = file_path.read_text() + "\n\nChecked!"
|
|
|
+ mime = magic.Magic(mime=True).from_file(file_path)
|
|
|
+ assert content + "\n\nChecked!" == requirements
|
|
|
return JSONResponse(status_code=201, content={
|
|
|
- "port": "ok",
|
|
|
+ "ctrl": "ok",
|
|
|
"output": {
|
|
|
- "artefact_1": "<uri>",
|
|
|
- "artefact_2": "<uri>",
|
|
|
+ "dout": {
|
|
|
+ "type": "inline",
|
|
|
+ "content": requirements,
|
|
|
+ "encoding": mime
|
|
|
+ }
|
|
|
}
|
|
|
})
|
|
|
+
|
|
|
+ @self.put("/")
|
|
|
+ async def root_put_mock(request: Request, query: str | None = Query(None)) -> Response:
|
|
|
+ return await root_mock(request, query)
|
|
|
+
|
|
|
+ @self.post("/")
|
|
|
+ async def root_post_mock(request: Request, query: str | None = Query(None)) -> Response:
|
|
|
+ return await root_mock(request, query)
|