Commit 6698d705 authored by Cesuuur's avatar Cesuuur
Browse files

feat: get / delete events

parent 1dbb8e2c
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -17,5 +17,3 @@ class Config:

	def get_config(self):
		return self.my_config

+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
@@ -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",)
@@ -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()):
    """
@@ -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()):
    """
@@ -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()):
@@ -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()):
    """
@@ -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()):
@@ -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()):
    """
+5 −2
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@ logger = logging.getLogger(__name__) # the __name__ resolve to "uicheckapp.serv

HOSTAME = "localhost"


class CapifOps():

    def __init__(self):
@@ -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}"
@@ -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)

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
+15 −2
Original line number Diff line number Diff line
@@ -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: