Loading config.py +0 −2 Original line number Diff line number Diff line Loading @@ -17,5 +17,3 @@ class Config: def get_config(self): return self.my_config controllers/resources.py +49 −8 Original line number Diff line number Diff line from core.invokers_resources import InvokersResources from core.providers_resources import ProviderResources from core.events import Events from fastapi import APIRouter, Depends, HTTPException, Request from typing import Optional from fastapi_jwt_auth import AuthJWT Loading @@ -7,11 +8,10 @@ from typing import List from datetime import date router = APIRouter() invokers_ops = InvokersResources() providers_ops = ProviderResources() events_ops = Events() @router.get("/resources/invokers",) Loading @@ -24,6 +24,7 @@ async def get_invokers(Authorize: AuthJWT = Depends()): return invokers_ops.get_all_invokers() @router.delete("/resources/invokers/{invoker_id}",) async def delete_invoker(invoker_id, Authorize: AuthJWT = Depends()): """ Loading @@ -44,6 +45,7 @@ def get_invoker_security_context_resources(invoker_id, Authorize: AuthJWT = Depe return invokers_ops.get_security_context(invoker_id) @router.get('/resources/invokers/events/{invoker_id}') def get_invoker_event_subscription_resources(Authorize: AuthJWT = Depends()): """ Loading @@ -51,7 +53,8 @@ def get_invoker_event_subscription_resources(Authorize: AuthJWT = Depends()): """ Authorize.jwt_required() return "not implemented yet" return invokers_ops.get_event_subscription() @router.get("/resources/providers",) async def get_all_providers(Authorize: AuthJWT = Depends()): Loading @@ -63,6 +66,7 @@ async def get_all_providers(Authorize: AuthJWT = Depends()): return providers_ops.get_all_providers() @router.delete("/resources/providers/{provider_id}",) async def delete_provider(provider_id, Authorize: AuthJWT = Depends()): """ Loading @@ -83,14 +87,50 @@ def get_provider_services_resources(apf_id, Authorize: AuthJWT = Depends()): return providers_ops.get_services_of_apf(apf_id) @router.get('/resources/providers/events/{apf_id}') def get_provider_services_resources(apf_id, Authorize: AuthJWT = Depends()): @router.get('/resources/events/{id}') def get_events(id, Authorize: AuthJWT = Depends()): """ Retreive all resources of provider, services, event subscriptions Retreive one event by the subscriber id (apf_id, aef_id, provider_id or api_invoker_id) """ Authorize.jwt_required() return events_ops.get_events_by_id(id) @router.get('/resources/events') def get_events(Authorize: AuthJWT = Depends()): """ Retreive all registered events """ Authorize.jwt_required() return "not implemented yet" return events_ops.get_events() @router.delete("/resources/events") async def delete_events(Authorize: AuthJWT = Depends()): """ Delete all events collection in DB """ Authorize.jwt_required() return events_ops.remove_events() @router.delete('/resources/events/{subscriber_id}/{subscription_id}') async def delete_events_by_subscriber_id(subscriber_id, subscription_id, Authorize: AuthJWT = Depends()): """ Delete events by subscriber id (apf_id, aef_id, provider_id or api_invoker_id) """ Authorize.jwt_required() return events_ops.remove_events_by_subscriber_id(subscriber_id, subscription_id) @router.delete('/resources/providers/services/{apf_id}/{service_id}') def delete_provider_service(apf_id, service_id, Authorize: AuthJWT = Depends()): Loading @@ -101,6 +141,7 @@ def delete_provider_service(apf_id, service_id, Authorize: AuthJWT = Depends()): return providers_ops.remove_service(apf_id, service_id) @router.delete('/resources/invokers/security/{invoker_id}') def delete_invoker_security_context(invoker_id, Authorize: AuthJWT = Depends()): """ Loading core/capif_ops.py +5 −2 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ logger = logging.getLogger(__name__) # the __name__ resolve to "uicheckapp.serv HOSTAME = "localhost" class CapifOps(): def __init__(self): Loading Loading @@ -36,6 +37,7 @@ class CapifOps(): response = self.__make_request(url) return response def delete_invoker(self, id): url = f"https://{HOSTAME}/api-invoker-management/v1/onboardedInvokers/{id}" Loading @@ -55,7 +57,8 @@ class CapifOps(): def __make_request(self, url): try: response = requests.delete(url, headers=self.headers, cert=('certs/cert_backoffice.crt', 'certs/private.key'), verify=False) response = requests.delete(url, headers=self.headers, cert=( 'certs/cert_backoffice.crt', 'certs/private.key'), verify=False) return response except Exception as e: logger.error("Something wrong happens: ", e) Loading core/events.py 0 → 100644 +61 −0 Original line number Diff line number Diff line from core.resources import Resource from core.capif_ops import CapifOps from core.responses import make_response import logging logger = logging.getLogger(__name__) class Events(Resource): def __init__(self): Resource.__init__(self) self.capif = CapifOps() def get_events_by_id(self, id): events_col = self.db.get_col_by_name(self.db.event_details) try: events = events_col.find({"subscriber_id": id}) json_events = [] for event in events: json_events.append(event) return make_response(object=json_events, status=200) except Exception as e: return "Error when retreiving event: ", e def get_events(self): events_col = self.db.get_col_by_name(self.db.event_details) try: events = events_col.find({}, {"_id": 0}) json_events = [] for event in events: json_events.append(event) return make_response(object=json_events, status=200) except Exception as e: print(e) return "Error when retreiving event list: ", e def remove_events(self): self.db.delete_col_by_name(self.db.event_details) return "Done", 200 def remove_events_by_subscriber_id(self, subscriber_id, subscription_id): self.capif.delete_event_subscription(subscriber_id, subscription_id) # self.db.delete_document_by_subscriber_id( # self.db.event_details, subscriber_id) return "Done", 200 db/db.py +15 −2 Original line number Diff line number Diff line Loading @@ -12,13 +12,26 @@ class MongoDatabse(): self.propvider_enrolment_details = self.config['mongo']['col_provider'] self.services = self.config['mongo']['col_services'] self.security_context = self.config['mongo']['col_security'] self.event_details = self.config['mongo']['col_event'] def get_col_by_name(self, name): return self.db[name].with_options(codec_options=CodecOptions(tz_aware=True)) def delete_col_by_name(self, name): """ Delete a collection by name """ try: self.db[name].drop() print(f"Collection {name} deleted successfully") except Exception as e: print( f"An exception occurred while deleting collection {name}: {e}") def __connect(self): uri = "mongodb://" + self.config['mongo']['user'] + ":" + self.config['mongo']['password'] + "@" + self.config['mongo']['host'] + ":" + self.config['mongo']['port'] uri = "mongodb://" + self.config['mongo']['user'] + ":" + self.config['mongo']['password'] + \ "@" + self.config['mongo']['host'] + \ ":" + self.config['mongo']['port'] client = MongoClient(uri) try: Loading Loading
config.py +0 −2 Original line number Diff line number Diff line Loading @@ -17,5 +17,3 @@ class Config: def get_config(self): return self.my_config
controllers/resources.py +49 −8 Original line number Diff line number Diff line from core.invokers_resources import InvokersResources from core.providers_resources import ProviderResources from core.events import Events from fastapi import APIRouter, Depends, HTTPException, Request from typing import Optional from fastapi_jwt_auth import AuthJWT Loading @@ -7,11 +8,10 @@ from typing import List from datetime import date router = APIRouter() invokers_ops = InvokersResources() providers_ops = ProviderResources() events_ops = Events() @router.get("/resources/invokers",) Loading @@ -24,6 +24,7 @@ async def get_invokers(Authorize: AuthJWT = Depends()): return invokers_ops.get_all_invokers() @router.delete("/resources/invokers/{invoker_id}",) async def delete_invoker(invoker_id, Authorize: AuthJWT = Depends()): """ Loading @@ -44,6 +45,7 @@ def get_invoker_security_context_resources(invoker_id, Authorize: AuthJWT = Depe return invokers_ops.get_security_context(invoker_id) @router.get('/resources/invokers/events/{invoker_id}') def get_invoker_event_subscription_resources(Authorize: AuthJWT = Depends()): """ Loading @@ -51,7 +53,8 @@ def get_invoker_event_subscription_resources(Authorize: AuthJWT = Depends()): """ Authorize.jwt_required() return "not implemented yet" return invokers_ops.get_event_subscription() @router.get("/resources/providers",) async def get_all_providers(Authorize: AuthJWT = Depends()): Loading @@ -63,6 +66,7 @@ async def get_all_providers(Authorize: AuthJWT = Depends()): return providers_ops.get_all_providers() @router.delete("/resources/providers/{provider_id}",) async def delete_provider(provider_id, Authorize: AuthJWT = Depends()): """ Loading @@ -83,14 +87,50 @@ def get_provider_services_resources(apf_id, Authorize: AuthJWT = Depends()): return providers_ops.get_services_of_apf(apf_id) @router.get('/resources/providers/events/{apf_id}') def get_provider_services_resources(apf_id, Authorize: AuthJWT = Depends()): @router.get('/resources/events/{id}') def get_events(id, Authorize: AuthJWT = Depends()): """ Retreive all resources of provider, services, event subscriptions Retreive one event by the subscriber id (apf_id, aef_id, provider_id or api_invoker_id) """ Authorize.jwt_required() return events_ops.get_events_by_id(id) @router.get('/resources/events') def get_events(Authorize: AuthJWT = Depends()): """ Retreive all registered events """ Authorize.jwt_required() return "not implemented yet" return events_ops.get_events() @router.delete("/resources/events") async def delete_events(Authorize: AuthJWT = Depends()): """ Delete all events collection in DB """ Authorize.jwt_required() return events_ops.remove_events() @router.delete('/resources/events/{subscriber_id}/{subscription_id}') async def delete_events_by_subscriber_id(subscriber_id, subscription_id, Authorize: AuthJWT = Depends()): """ Delete events by subscriber id (apf_id, aef_id, provider_id or api_invoker_id) """ Authorize.jwt_required() return events_ops.remove_events_by_subscriber_id(subscriber_id, subscription_id) @router.delete('/resources/providers/services/{apf_id}/{service_id}') def delete_provider_service(apf_id, service_id, Authorize: AuthJWT = Depends()): Loading @@ -101,6 +141,7 @@ def delete_provider_service(apf_id, service_id, Authorize: AuthJWT = Depends()): return providers_ops.remove_service(apf_id, service_id) @router.delete('/resources/invokers/security/{invoker_id}') def delete_invoker_security_context(invoker_id, Authorize: AuthJWT = Depends()): """ Loading
core/capif_ops.py +5 −2 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ logger = logging.getLogger(__name__) # the __name__ resolve to "uicheckapp.serv HOSTAME = "localhost" class CapifOps(): def __init__(self): Loading Loading @@ -36,6 +37,7 @@ class CapifOps(): response = self.__make_request(url) return response def delete_invoker(self, id): url = f"https://{HOSTAME}/api-invoker-management/v1/onboardedInvokers/{id}" Loading @@ -55,7 +57,8 @@ class CapifOps(): def __make_request(self, url): try: response = requests.delete(url, headers=self.headers, cert=('certs/cert_backoffice.crt', 'certs/private.key'), verify=False) response = requests.delete(url, headers=self.headers, cert=( 'certs/cert_backoffice.crt', 'certs/private.key'), verify=False) return response except Exception as e: logger.error("Something wrong happens: ", e) Loading
core/events.py 0 → 100644 +61 −0 Original line number Diff line number Diff line from core.resources import Resource from core.capif_ops import CapifOps from core.responses import make_response import logging logger = logging.getLogger(__name__) class Events(Resource): def __init__(self): Resource.__init__(self) self.capif = CapifOps() def get_events_by_id(self, id): events_col = self.db.get_col_by_name(self.db.event_details) try: events = events_col.find({"subscriber_id": id}) json_events = [] for event in events: json_events.append(event) return make_response(object=json_events, status=200) except Exception as e: return "Error when retreiving event: ", e def get_events(self): events_col = self.db.get_col_by_name(self.db.event_details) try: events = events_col.find({}, {"_id": 0}) json_events = [] for event in events: json_events.append(event) return make_response(object=json_events, status=200) except Exception as e: print(e) return "Error when retreiving event list: ", e def remove_events(self): self.db.delete_col_by_name(self.db.event_details) return "Done", 200 def remove_events_by_subscriber_id(self, subscriber_id, subscription_id): self.capif.delete_event_subscription(subscriber_id, subscription_id) # self.db.delete_document_by_subscriber_id( # self.db.event_details, subscriber_id) return "Done", 200
db/db.py +15 −2 Original line number Diff line number Diff line Loading @@ -12,13 +12,26 @@ class MongoDatabse(): self.propvider_enrolment_details = self.config['mongo']['col_provider'] self.services = self.config['mongo']['col_services'] self.security_context = self.config['mongo']['col_security'] self.event_details = self.config['mongo']['col_event'] def get_col_by_name(self, name): return self.db[name].with_options(codec_options=CodecOptions(tz_aware=True)) def delete_col_by_name(self, name): """ Delete a collection by name """ try: self.db[name].drop() print(f"Collection {name} deleted successfully") except Exception as e: print( f"An exception occurred while deleting collection {name}: {e}") def __connect(self): uri = "mongodb://" + self.config['mongo']['user'] + ":" + self.config['mongo']['password'] + "@" + self.config['mongo']['host'] + ":" + self.config['mongo']['port'] uri = "mongodb://" + self.config['mongo']['user'] + ":" + self.config['mongo']['password'] + \ "@" + self.config['mongo']['host'] + \ ":" + self.config['mongo']['port'] client = MongoClient(uri) try: Loading