Loading services/TS29222_CAPIF_Discover_Service_API/service_apis/core/discoveredapis.py +16 −2 Original line number Diff line number Diff line Loading @@ -8,6 +8,18 @@ import json from ..vendor_specific import find_attribute_in_body, filter_apis_with_vendor_specific_params def filter_fields(vs_filtered_apis): key_filter = [ "api_name", "api_id", "aef_profiles", "description", "supported_features", "shareable_info", "service_api_category", "api_supp_feats", "pub_api_path", "ccf_id" ] field_filtered_api = {} for key in vs_filtered_apis.keys(): if key in key_filter or 'vendorSpecific' in key: field_filtered_api[key] = vs_filtered_apis[key] return field_filtered_api class DiscoverApisOperations(Resource): def get_discoveredapis(self, api_invoker_id, query_params): Loading Loading @@ -56,17 +68,19 @@ class DiscoverApisOperations(Resource): discoved_apis = services.find(my_query, {"_id":0}) json_docs = [] for discoved_api in discoved_apis: current_app.logger.debug(discoved_api) vendor_specific_fields_path = find_attribute_in_body(discoved_api, '') if vend_spec_query_params_n_values and vendor_specific_fields_path: vs_filtered_apis = filter_apis_with_vendor_specific_params(discoved_api, vend_spec_query_params_n_values, vendor_specific_fields_path) if vs_filtered_apis: json_docs.append(vs_filtered_apis) json_docs.append(filter_fields(vs_filtered_apis)) else: json_docs.append(discoved_api) json_docs.append(filter_fields(discoved_api)) if len(json_docs) == 0: return not_found_error(detail="API Invoker " + api_invoker_id + " has no API Published that accomplish filter conditions", cause="No API Published accomplish filter conditions") apis_discovered = DiscoveredAPIs(service_api_descriptions=json_docs) res = make_response(object=serialize_clean_camel_case(apis_discovered), status=200) return res Loading services/TS29222_CAPIF_Discover_Service_API/service_apis/vendor_specific.py +5 −5 Original line number Diff line number Diff line Loading @@ -55,7 +55,6 @@ def add_vend_spec_fields(vendor_specific, serviceapidescription_dict): return tmp_body def filter_apis_with_vendor_specific_params(discoved_api, vend_spec_query_params_n_values, vendor_specific_fields_path): json_docs = [] for k, v in vend_spec_query_params_n_values.items(): parts = k.split('.') for path in vendor_specific_fields_path: Loading @@ -68,8 +67,9 @@ def filter_apis_with_vendor_specific_params(discoved_api, vend_spec_query_params path_piece = int(path_piece) v_2 = tmp_body[path_piece] tmp_body = v_2 # Check if parameter exists in the field attributes!!!! if parts[1] in tmp_body[vs_field].keys(): if tmp_body[vs_field][parts[1]] == v: json_docs.append(discoved_api) return json_docs No newline at end of file if tmp_body[vs_field][parts[1]] != v: return {} else: return {} return discoved_api No newline at end of file Loading
services/TS29222_CAPIF_Discover_Service_API/service_apis/core/discoveredapis.py +16 −2 Original line number Diff line number Diff line Loading @@ -8,6 +8,18 @@ import json from ..vendor_specific import find_attribute_in_body, filter_apis_with_vendor_specific_params def filter_fields(vs_filtered_apis): key_filter = [ "api_name", "api_id", "aef_profiles", "description", "supported_features", "shareable_info", "service_api_category", "api_supp_feats", "pub_api_path", "ccf_id" ] field_filtered_api = {} for key in vs_filtered_apis.keys(): if key in key_filter or 'vendorSpecific' in key: field_filtered_api[key] = vs_filtered_apis[key] return field_filtered_api class DiscoverApisOperations(Resource): def get_discoveredapis(self, api_invoker_id, query_params): Loading Loading @@ -56,17 +68,19 @@ class DiscoverApisOperations(Resource): discoved_apis = services.find(my_query, {"_id":0}) json_docs = [] for discoved_api in discoved_apis: current_app.logger.debug(discoved_api) vendor_specific_fields_path = find_attribute_in_body(discoved_api, '') if vend_spec_query_params_n_values and vendor_specific_fields_path: vs_filtered_apis = filter_apis_with_vendor_specific_params(discoved_api, vend_spec_query_params_n_values, vendor_specific_fields_path) if vs_filtered_apis: json_docs.append(vs_filtered_apis) json_docs.append(filter_fields(vs_filtered_apis)) else: json_docs.append(discoved_api) json_docs.append(filter_fields(discoved_api)) if len(json_docs) == 0: return not_found_error(detail="API Invoker " + api_invoker_id + " has no API Published that accomplish filter conditions", cause="No API Published accomplish filter conditions") apis_discovered = DiscoveredAPIs(service_api_descriptions=json_docs) res = make_response(object=serialize_clean_camel_case(apis_discovered), status=200) return res Loading
services/TS29222_CAPIF_Discover_Service_API/service_apis/vendor_specific.py +5 −5 Original line number Diff line number Diff line Loading @@ -55,7 +55,6 @@ def add_vend_spec_fields(vendor_specific, serviceapidescription_dict): return tmp_body def filter_apis_with_vendor_specific_params(discoved_api, vend_spec_query_params_n_values, vendor_specific_fields_path): json_docs = [] for k, v in vend_spec_query_params_n_values.items(): parts = k.split('.') for path in vendor_specific_fields_path: Loading @@ -68,8 +67,9 @@ def filter_apis_with_vendor_specific_params(discoved_api, vend_spec_query_params path_piece = int(path_piece) v_2 = tmp_body[path_piece] tmp_body = v_2 # Check if parameter exists in the field attributes!!!! if parts[1] in tmp_body[vs_field].keys(): if tmp_body[vs_field][parts[1]] == v: json_docs.append(discoved_api) return json_docs No newline at end of file if tmp_body[vs_field][parts[1]] != v: return {} else: return {} return discoved_api No newline at end of file