Commit f9e05a72 authored by Pelayo Torres's avatar Pelayo Torres
Browse files

Events service logic

parent 53fa952b
Loading
Loading
Loading
Loading
Loading
+10 −6
Original line number Original line Diff line number Diff line
@@ -88,7 +88,7 @@ def subscriber_id_subscriptions_subscription_id_delete(subscriber_id, subscripti
    return res
    return res




def subscriber_id_subscriptions_subscription_id_patch(subscriber_id, subscription_id, event_subscription_patch):  # noqa: E501
def subscriber_id_subscriptions_subscription_id_patch(subscriber_id, subscription_id, body):  # noqa: E501
    """subscriber_id_subscriptions_subscription_id_patch
    """subscriber_id_subscriptions_subscription_id_patch


    Modification of an existing individual CAPIF Event Subscription. # noqa: E501
    Modification of an existing individual CAPIF Event Subscription. # noqa: E501
@@ -103,11 +103,13 @@ def subscriber_id_subscriptions_subscription_id_patch(subscriber_id, subscriptio
    :rtype: Union[EventSubscription, Tuple[EventSubscription, int], Tuple[EventSubscription, int, Dict[str, str]]
    :rtype: Union[EventSubscription, Tuple[EventSubscription, int], Tuple[EventSubscription, int, Dict[str, str]]
    """
    """
    if connexion.request.is_json:
    if connexion.request.is_json:
        event_subscription_patch = EventSubscriptionPatch.from_dict(connexion.request.get_json())  # noqa: E501
        body = EventSubscriptionPatch.from_dict(connexion.request.get_json())  # noqa: E501
    return 'do some magic!'
    
    res = events_ops.patch_event(body, subscriber_id, subscription_id)
    return res




def subscriber_id_subscriptions_subscription_id_put(subscriber_id, subscription_id, event_subscription):  # noqa: E501
def subscriber_id_subscriptions_subscription_id_put(subscriber_id, subscription_id, body):  # noqa: E501
    """subscriber_id_subscriptions_subscription_id_put
    """subscriber_id_subscriptions_subscription_id_put


    Update of an existing individual CAPIF Event Subscription. # noqa: E501
    Update of an existing individual CAPIF Event Subscription. # noqa: E501
@@ -122,5 +124,7 @@ def subscriber_id_subscriptions_subscription_id_put(subscriber_id, subscription_
    :rtype: Union[EventSubscription, Tuple[EventSubscription, int], Tuple[EventSubscription, int, Dict[str, str]]
    :rtype: Union[EventSubscription, Tuple[EventSubscription, int], Tuple[EventSubscription, int, Dict[str, str]]
    """
    """
    if connexion.request.is_json:
    if connexion.request.is_json:
        event_subscription = EventSubscription.from_dict(connexion.request.get_json())  # noqa: E501
        body = EventSubscription.from_dict(connexion.request.get_json())  # noqa: E501
    return 'do some magic!'
    
    res = events_ops.put_event(body, subscriber_id, subscription_id)
    return res
+70 −1
Original line number Original line Diff line number Diff line
@@ -8,11 +8,12 @@ from flask import current_app, Flask, Response
import json
import json
from ..encoder import JSONEncoder
from ..encoder import JSONEncoder
from ..models.problem_details import ProblemDetails
from ..models.problem_details import ProblemDetails
from capif_events.models.event_subscription import EventSubscription  # noqa: E501
from .resources import Resource
from .resources import Resource
from bson import json_util
from bson import json_util
from .responses import internal_server_error, not_found_error, make_response, bad_request_error
from .responses import internal_server_error, not_found_error, make_response, bad_request_error
from ..db.db import MongoDatabse
from ..db.db import MongoDatabse
from ..util import serialize_clean_camel_case
from ..util import serialize_clean_camel_case, clean_empty, dict_to_camel_case
from .auth_manager import AuthManager
from .auth_manager import AuthManager




@@ -119,4 +120,72 @@ class EventSubscriptionsOperations(Resource):
            current_app.logger.error(exception + "::" + str(e))
            current_app.logger.error(exception + "::" + str(e))
            return internal_server_error(detail=exception, cause=str(e))
            return internal_server_error(detail=exception, cause=str(e))
        
        
    def put_event(self, event_subscription, subscriber_id, subscription_id):
        try:
            mycol = self.db.get_col_by_name(self.db.event_collection)

            current_app.logger.debug("Updating event subscription")

            result = self.__check_subscriber_id(subscriber_id)

            if  isinstance(result, Response):
                return result

            my_query = {'subscriber_id': subscriber_id,
                    'subscription_id': subscription_id}
            eventdescription = mycol.find_one(my_query)

            if eventdescription is None:
                current_app.logger.error("Event subscription not found")
                return not_found_error(detail="Event subscription not exist", cause="Event API subscription id not found")
            body = event_subscription.to_dict()

            body["subscriber_id"] = subscriber_id
            body["subscription_id"] = subscription_id

            mycol.replace_one(my_query, body)
            current_app.logger.debug("Event subscription updated from database")


            res = make_response(object=serialize_clean_camel_case(event_subscription), status=200)

            return res
            
        except Exception as e:
            exception= "An exception occurred in updating event"
            current_app.logger.error(exception + "::" + str(e))
            return internal_server_error(detail=exception, cause=str(e)) 



    def patch_event(self, event_subscription, subscriber_id, subscription_id):
        try:
            mycol = self.db.get_col_by_name(self.db.event_collection)

            current_app.logger.debug("Patching event subscription")

            result = self.__check_subscriber_id(subscriber_id)

            if  isinstance(result, Response):
                return result

            my_query = {'subscriber_id': subscriber_id,
                    'subscription_id': subscription_id}
            eventdescription = mycol.find_one(my_query)

            if eventdescription is None:
                current_app.logger.error("Event subscription not found")
                return not_found_error(detail="Event subscription not exist", cause="Event API subscription id not found")

            body = clean_empty(event_subscription.to_dict())
            document = mycol.update_one(my_query, {"$set":body})
            document = mycol.find_one(my_query)
            current_app.logger.debug("Event subscription patched from database")

            res = make_response(object=EventSubscription.from_dict(dict_to_camel_case(document)), status=200)

            return res
            
        except Exception as e:
            exception= "An exception occurred in patching event"
            current_app.logger.error(exception + "::" + str(e))
            return internal_server_error(detail=exception, cause=str(e))