Loading services/TS29222_CAPIF_Security_API/capif_security/core/servicesecurity.py +13 −6 Original line number Diff line number Diff line Loading @@ -256,7 +256,7 @@ class SecurityOperations(Resource): return bad_request_error(detail="Bad Param", cause="Detected Bad format of param", invalid_params=[{"param": "notificationDestination", "reason": "Not valid URL format"}]) services_security_object = mycol.find_one( {"api_invoker_id": api_invoker_id}) {"api_invoker_id": api_invoker_id, "security_info.api_id": {"$in": [info.api_id for info in service_security.security_info]}}, {"_id": 0}) if services_security_object is not None: Loading Loading @@ -388,12 +388,19 @@ class SecurityOperations(Resource): current_app.logger.debug( "Inserted security context in database") rec = dict() rec['api_invoker_id'] = api_invoker_id rec.update(service_security.to_dict()) mycol.insert_one(rec) # We use update with $setOnInsert and $push with $each to add the security info array if the document is created on_insert = service_security.to_dict().copy() on_insert.pop('security_info', None) res = make_response(object=serialize_clean_camel_case(service_security), status=201) security_context = mycol.find_one_and_update({'api_invoker_id': api_invoker_id}, {"$setOnInsert": on_insert, "$push": {"security_info": {"$each": [sec.to_dict() for sec in service_security.security_info]}}}, upsert=True , return_document=ReturnDocument.AFTER, projection={'_id': 0, 'api_invoker_id': 0} ) res = make_response(object=dict_to_camel_case(security_context), status=201) res.headers['Location'] = f"https://{os.getenv("CAPIF_HOSTNAME")}/capif-security/v1/trustedInvokers/{str(api_invoker_id)}" return res Loading Loading
services/TS29222_CAPIF_Security_API/capif_security/core/servicesecurity.py +13 −6 Original line number Diff line number Diff line Loading @@ -256,7 +256,7 @@ class SecurityOperations(Resource): return bad_request_error(detail="Bad Param", cause="Detected Bad format of param", invalid_params=[{"param": "notificationDestination", "reason": "Not valid URL format"}]) services_security_object = mycol.find_one( {"api_invoker_id": api_invoker_id}) {"api_invoker_id": api_invoker_id, "security_info.api_id": {"$in": [info.api_id for info in service_security.security_info]}}, {"_id": 0}) if services_security_object is not None: Loading Loading @@ -388,12 +388,19 @@ class SecurityOperations(Resource): current_app.logger.debug( "Inserted security context in database") rec = dict() rec['api_invoker_id'] = api_invoker_id rec.update(service_security.to_dict()) mycol.insert_one(rec) # We use update with $setOnInsert and $push with $each to add the security info array if the document is created on_insert = service_security.to_dict().copy() on_insert.pop('security_info', None) res = make_response(object=serialize_clean_camel_case(service_security), status=201) security_context = mycol.find_one_and_update({'api_invoker_id': api_invoker_id}, {"$setOnInsert": on_insert, "$push": {"security_info": {"$each": [sec.to_dict() for sec in service_security.security_info]}}}, upsert=True , return_document=ReturnDocument.AFTER, projection={'_id': 0, 'api_invoker_id': 0} ) res = make_response(object=dict_to_camel_case(security_context), status=201) res.headers['Location'] = f"https://{os.getenv("CAPIF_HOSTNAME")}/capif-security/v1/trustedInvokers/{str(api_invoker_id)}" return res Loading