Commit 6bf8d7e1 authored by Pelayo Torres's avatar Pelayo Torres
Browse files

REL 19 Events_API

parent 9b1ca4a3
Loading
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -55,7 +55,7 @@ def cert_validation():
        return __cert_validation
    return _cert_validation


@cert_validation()
def all_service_apis_get(api_invoker_id, api_name=None, api_version=None, comm_type=None, protocol=None, aef_id=None, data_format=None, api_cat=None, preferred_aef_loc=None, req_api_prov_name=None, api_supported_features=None, ue_ip_addr=None, service_kpis=None, net_slice_info=None, grant_types=None, api_ids=None, res_ops=None, supported_features=None):  # noqa: E501
    """all_service_apis_get

+11 −2
Original line number Diff line number Diff line
@@ -8,7 +8,8 @@ git_push.sh
capif_events/__init__.py
capif_events/__main__.py
capif_events/controllers/__init__.py
capif_events/controllers/default_controller.py
capif_events/controllers/capifs_events_subscriptions_collection_controller.py
capif_events/controllers/individual_capifs_events_subscription_document_controller.py
capif_events/controllers/security_controller.py
capif_events/encoder.py
capif_events/models/__init__.py
@@ -16,6 +17,8 @@ capif_events/models/access_control_policy_list.py
capif_events/models/access_control_policy_list_ext.py
capif_events/models/aef_location.py
capif_events/models/aef_profile.py
capif_events/models/api_info.py
capif_events/models/api_invoker_count.py
capif_events/models/api_invoker_policy.py
capif_events/models/api_status.py
capif_events/models/base_model.py
@@ -27,6 +30,7 @@ capif_events/models/civic_address.py
capif_events/models/communication_type.py
capif_events/models/custom_operation.py
capif_events/models/data_format.py
capif_events/models/discovery_count.py
capif_events/models/ellipsoid_arc.py
capif_events/models/event_notification.py
capif_events/models/event_subscription.py
@@ -49,9 +53,11 @@ capif_events/models/local_origin.py
capif_events/models/log.py
capif_events/models/muting_exception_instructions.py
capif_events/models/muting_notifications_settings.py
capif_events/models/net_slice_id.py
capif_events/models/notification_flag.py
capif_events/models/notification_method.py
capif_events/models/o_auth_grant_type.py
capif_events/models/onboarding_criteria.py
capif_events/models/operation.py
capif_events/models/partitioning_criteria.py
capif_events/models/point.py
@@ -63,6 +69,7 @@ capif_events/models/polygon.py
capif_events/models/problem_details.py
capif_events/models/protocol.py
capif_events/models/published_api_path.py
capif_events/models/related_criteria.py
capif_events/models/relative_cartesian_location.py
capif_events/models/reporting_information.py
capif_events/models/resource.py
@@ -71,6 +78,7 @@ capif_events/models/security_method.py
capif_events/models/service_api_description.py
capif_events/models/service_kpis.py
capif_events/models/shareable_information.py
capif_events/models/snssai.py
capif_events/models/subscription_action.py
capif_events/models/supported_gad_shapes.py
capif_events/models/time_range_list.py
@@ -81,7 +89,8 @@ capif_events/models/version.py
capif_events/models/websock_notif_config.py
capif_events/openapi/openapi.yaml
capif_events/test/__init__.py
capif_events/test/test_default_controller.py
capif_events/test/test_capifs_events_subscriptions_collection_controller.py
capif_events/test/test_individual_capifs_events_subscription_document_controller.py
capif_events/typing_utils.py
capif_events/util.py
requirements.txt
+69 −0
Original line number Diff line number Diff line
import connexion
from typing import Dict
from typing import Tuple
from typing import Union

from capif_events.models.problem_details import ProblemDetails  # noqa: E501
from capif_events import util

from functools import wraps

from capif_events.models.event_subscription import EventSubscription  # noqa: E501
from cryptography import x509
from cryptography.hazmat.backends import default_backend
from flask import current_app, request

from ..core.events_apis import EventSubscriptionsOperations
from ..core.validate_user import ControlAccess

events_ops = EventSubscriptionsOperations()
valid_user = ControlAccess()

def cert_validation():
    def _cert_validation(f):
        @wraps(f)
        def __cert_validation(*args, **kwargs):

            args = request.view_args
            cert_tmp = request.headers['X-Ssl-Client-Cert']
            cert_raw = cert_tmp.replace('\t', '')

            cert = x509.load_pem_x509_certificate(str.encode(cert_raw), default_backend())

            cn = cert.subject.get_attributes_for_oid(x509.OID_COMMON_NAME)[0].value.strip()

            if cn != "superadmin":
                cert_signature = cert.signature.hex()
                if request.method != 'POST':
                    result = valid_user.validate_user_cert(args["subscriptionId"], args["subscriberId"], cert_signature)
                else:
                    result = valid_user.validate_user_cert(None, args["subscriberId"], cert_signature)

                if result is not None:
                    return result

            result = f(**kwargs)
            return result
        return __cert_validation
    return _cert_validation

@cert_validation()
def create_event_subsc(subscriber_id, body):  # noqa: E501
    """Create a new CAPIFs Event Subscription.

     # noqa: E501

    :param subscriber_id: Identifier of the Subscriber
    :type subscriber_id: str
    :param event_subscription: 
    :type event_subscription: dict | bytes

    :rtype: Union[EventSubscription, Tuple[EventSubscription, int], Tuple[EventSubscription, int, Dict[str, str]]
    """
    current_app.logger.info("Creating event subscription")
    if request.is_json:
        body = EventSubscription.from_dict(request.get_json())  # noqa: E501

    res = events_ops.create_event(subscriber_id, body)

    return res
+19 −31
Original line number Diff line number Diff line
import connexion
from typing import Dict
from typing import Tuple
from typing import Union

from capif_events.models.event_subscription import EventSubscription  # noqa: E501
from capif_events.models.event_subscription_patch import EventSubscriptionPatch  # noqa: E501
from capif_events.models.problem_details import ProblemDetails  # noqa: E501
from capif_events import util

from functools import wraps

from capif_events.models.event_subscription import EventSubscription  # noqa: E501
@@ -40,33 +50,11 @@ def cert_validation():
        return __cert_validation
    return _cert_validation


@cert_validation()
def subscriber_id_subscriptions_post(subscriber_id, body):  # noqa: E501
    """subscriber_id_subscriptions_post

    Creates a new individual CAPIF Event Subscription. # noqa: E501

    :param subscriber_id: Identifier of the Subscriber
    :type subscriber_id: str
    :param event_subscription: 
    :type event_subscription: dict | bytes

    :rtype: Union[EventSubscription, Tuple[EventSubscription, int], Tuple[EventSubscription, int, Dict[str, str]]
    """
    current_app.logger.info("Creating event subscription")
    if request.is_json:
        body = EventSubscription.from_dict(request.get_json())  # noqa: E501

    res = events_ops.create_event(subscriber_id, body)

    return res

@cert_validation()
def subscriber_id_subscriptions_subscription_id_delete(subscriber_id, subscription_id):  # noqa: E501
    """subscriber_id_subscriptions_subscription_id_delete
def delete_ind_event_subsc(subscriber_id, subscription_id):  # noqa: E501
    """Delete an existing Individual CAPIF Events Subscription resource.

    Deletes an individual CAPIF Event Subscription. # noqa: E501
     # noqa: E501

    :param subscriber_id: Identifier of the Subscriber
    :type subscriber_id: str
@@ -82,10 +70,10 @@ def subscriber_id_subscriptions_subscription_id_delete(subscriber_id, subscripti
    return res

@cert_validation()
def subscriber_id_subscriptions_subscription_id_patch(subscriber_id, subscription_id, body):  # noqa: E501
    """subscriber_id_subscriptions_subscription_id_patch
def modify_ind_event_subsc(subscriber_id, subscription_id, body):  # noqa: E501
    """Modify an existing Individual CAPIF Events Subscription resource.

    Modification of an existing individual CAPIF Event Subscription. # noqa: E501
     # noqa: E501

    :param subscriber_id: Identifier of the Subscriber
    :type subscriber_id: str
@@ -103,10 +91,10 @@ def subscriber_id_subscriptions_subscription_id_patch(subscriber_id, subscriptio
    return res

@cert_validation()
def subscriber_id_subscriptions_subscription_id_put(subscriber_id, subscription_id, body):  # noqa: E501
    """subscriber_id_subscriptions_subscription_id_put
def update_ind_event_subsc(subscriber_id, subscription_id, body):  # noqa: E501
    """Update an existing Individual CAPIF Events Subscription resource.

    Update of an existing individual CAPIF Event Subscription. # noqa: E501
     # noqa: E501

    :param subscriber_id: Identifier of the Subscriber
    :type subscriber_id: str
+1 −1
Original line number Diff line number Diff line

from typing import List
Loading