diff --git a/picoapi/api.py b/picoapi/api.py index 7ec0ae0..5bc1aa5 100644 --- a/picoapi/api.py +++ b/picoapi/api.py @@ -57,32 +57,37 @@ def __init__( **kwargs ) -> None: - # call super class __init__ - super().__init__(*args, **kwargs) - - # add the cors middleware - self.add_middleware( - CORSMiddleware, - allow_origins=allow_origins, - allow_credentials=allow_credentials, - allow_methods=allow_methods, - allow_headers=allow_headers, - ) - self.is_master = is_master self.services = [] self.healthchecks = {} - self.add_api_route(api_health_path, healthcheck) if self.is_master: + # call super class __init__ + super().__init__(*args, **kwargs) + # add service registration - self.add_api_route("/register", self.add_service) + self.add_api_route("/register", self.add_service, methods=["PUT"]) self.add_api_route("/services/status", self.get_services_status) - self.add_api_route("/services/definition", self.get_services_status) + self.add_api_route("/services/definition", self.get_services_openapi) else: # add the service registration event - self.router.on_event("startup", register_uservice) + kwargs["on_startup"] = [register_uservice, *[x for x in kwargs.get("on_startup")]] if kwargs.get("on_startup") else [register_uservice] + + # call super class __init__ + super().__init__(*args, **kwargs) + + # add the cors middleware + self.add_middleware( + CORSMiddleware, + allow_origins=allow_origins, + allow_credentials=allow_credentials, + allow_methods=allow_methods, + allow_headers=allow_headers, + ) + + # add healthcheck route + self.add_api_route(api_health_path, healthcheck) async def get_services_status(self): return JSONResponse(