endpoint.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import logging
  2. import arklog
  3. import time
  4. from typing import Any
  5. from fastapi import FastAPI, Request, Response
  6. from fastapi.middleware.cors import CORSMiddleware
  7. from mocka.router import MockRouter
  8. arklog.set_config_logging()
  9. class MockActivityEndpoint(FastAPI):
  10. """"""
  11. def __init__(self, *args: Any, title: str, description: str, version: str, configuration, **kwargs: Any):
  12. """"""
  13. self.title = title
  14. self.description = description
  15. self.version = version
  16. self.configuration = configuration
  17. super().__init__(*args, title=title, description=description, version=version, **kwargs)
  18. logging.debug(self.description)
  19. sparql_router = MockRouter(title=title, description=description, version=version, configuration=configuration)
  20. self.include_router(sparql_router)
  21. self.add_middleware(
  22. CORSMiddleware,
  23. allow_origins=["*"],
  24. allow_credentials=True,
  25. allow_methods=["*"],
  26. allow_headers=["*"],
  27. )
  28. @self.middleware("http")
  29. async def add_process_time_header(request: Request, call_next: Any) -> Response:
  30. start_time = time.time()
  31. response: Response = await call_next(request)
  32. duration = str(time.time() - start_time)
  33. response.headers["X-Process-Time"] = duration
  34. logging.debug(f"X-Process-Time = {duration}")
  35. return response