Loading services/TS29222_CAPIF_Discover_Service_API/service_apis/core/discoveredapis.py +5 −4 Original line number Original line Diff line number Diff line Loading @@ -80,7 +80,7 @@ class DiscoverApisOperations(Resource): if "vend-spec" in param: if "vend-spec" in param: vend_param = param.split("vend-spec-")[1] vend_param = param.split("vend-spec-")[1] attribute_path = query_params[param]["target"].split('/') attribute_path = query_params[param]["target"].split('/') vend_spec_query_params_n_values[attribute_path[1] + "." + vend_param] = query_params[param]["value"] vend_spec_query_params_n_values[".".join(attribute_path[1:]) + "." + vend_param] = query_params[param]["value"] elif param in ["api_version", "comm_type", "protocol", "aef_id", "data_format"]: elif param in ["api_version", "comm_type", "protocol", "aef_id", "data_format"]: my_params.append(json.loads(query_params_name[param].replace("QPV", query_params[param]))) my_params.append(json.loads(query_params_name[param].replace("QPV", query_params[param]))) else: else: Loading @@ -102,9 +102,10 @@ class DiscoverApisOperations(Resource): vendor_specific_fields_path = find_attribute_in_body(discoved_api, '') vendor_specific_fields_path = find_attribute_in_body(discoved_api, '') if vendor_specific_fields_path: if vendor_specific_fields_path: if vend_spec_query_params_n_values: if vend_spec_query_params_n_values: vs_filtered_apis = filter_apis_with_vendor_specific_params(discoved_api, vend_spec_query_params_n_values, vendor_specific_fields_path) pass_filter = filter_apis_with_vendor_specific_params(discoved_api, if vs_filtered_apis: vend_spec_query_params_n_values) json_docs.append(filter_fields(vs_filtered_apis)) if pass_filter: json_docs.append(filter_fields(discoved_api)) else: else: json_docs.append(filter_fields(discoved_api)) json_docs.append(filter_fields(discoved_api)) else: else: Loading services/TS29222_CAPIF_Discover_Service_API/service_apis/vendor_specific.py +22 −18 Original line number Original line Diff line number Diff line import re import re from flask import current_app def find_attribute_in_body(test, path): def find_attribute_in_body(test, path): f_key = [] f_key = [] Loading Loading @@ -70,22 +70,26 @@ def remove_vendor_specific_fields(discoved_api, vendor_specific_fields_path): return discoved_api return discoved_api def filter_apis_with_vendor_specific_params(discoved_api, vend_spec_query_params_n_values, vendor_specific_fields_path): def nested_key_exists(dictionary, keys): """ Checks if a nested path of keys exists in a dictionary. """ _dict = dictionary for key in keys: if isinstance(_dict, dict) and key in _dict: _dict = _dict[key] else: return False, -1 return True, _dict def filter_apis_with_vendor_specific_params(discoved_api, vend_spec_query_params_n_values): pass_filter = True for k, v in vend_spec_query_params_n_values.items(): for k, v in vend_spec_query_params_n_values.items(): parts = k.split('.') parts = k.split('.') for path in vendor_specific_fields_path: exists, value = nested_key_exists(discoved_api, parts) if parts[0] in path: if exists: path_pieces = path.split('.') if v != value: tmp_body = discoved_api pass_filter = False vs_field = path_pieces[-1] break for path_piece in path_pieces[:-1]: return pass_filter if path_piece.isnumeric(): No newline at end of file path_piece = int(path_piece) v_2 = tmp_body[path_piece] tmp_body = v_2 if parts[1] in tmp_body[vs_field].keys(): 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 +5 −4 Original line number Original line Diff line number Diff line Loading @@ -80,7 +80,7 @@ class DiscoverApisOperations(Resource): if "vend-spec" in param: if "vend-spec" in param: vend_param = param.split("vend-spec-")[1] vend_param = param.split("vend-spec-")[1] attribute_path = query_params[param]["target"].split('/') attribute_path = query_params[param]["target"].split('/') vend_spec_query_params_n_values[attribute_path[1] + "." + vend_param] = query_params[param]["value"] vend_spec_query_params_n_values[".".join(attribute_path[1:]) + "." + vend_param] = query_params[param]["value"] elif param in ["api_version", "comm_type", "protocol", "aef_id", "data_format"]: elif param in ["api_version", "comm_type", "protocol", "aef_id", "data_format"]: my_params.append(json.loads(query_params_name[param].replace("QPV", query_params[param]))) my_params.append(json.loads(query_params_name[param].replace("QPV", query_params[param]))) else: else: Loading @@ -102,9 +102,10 @@ class DiscoverApisOperations(Resource): vendor_specific_fields_path = find_attribute_in_body(discoved_api, '') vendor_specific_fields_path = find_attribute_in_body(discoved_api, '') if vendor_specific_fields_path: if vendor_specific_fields_path: if vend_spec_query_params_n_values: if vend_spec_query_params_n_values: vs_filtered_apis = filter_apis_with_vendor_specific_params(discoved_api, vend_spec_query_params_n_values, vendor_specific_fields_path) pass_filter = filter_apis_with_vendor_specific_params(discoved_api, if vs_filtered_apis: vend_spec_query_params_n_values) json_docs.append(filter_fields(vs_filtered_apis)) if pass_filter: json_docs.append(filter_fields(discoved_api)) else: else: json_docs.append(filter_fields(discoved_api)) json_docs.append(filter_fields(discoved_api)) else: else: Loading
services/TS29222_CAPIF_Discover_Service_API/service_apis/vendor_specific.py +22 −18 Original line number Original line Diff line number Diff line import re import re from flask import current_app def find_attribute_in_body(test, path): def find_attribute_in_body(test, path): f_key = [] f_key = [] Loading Loading @@ -70,22 +70,26 @@ def remove_vendor_specific_fields(discoved_api, vendor_specific_fields_path): return discoved_api return discoved_api def filter_apis_with_vendor_specific_params(discoved_api, vend_spec_query_params_n_values, vendor_specific_fields_path): def nested_key_exists(dictionary, keys): """ Checks if a nested path of keys exists in a dictionary. """ _dict = dictionary for key in keys: if isinstance(_dict, dict) and key in _dict: _dict = _dict[key] else: return False, -1 return True, _dict def filter_apis_with_vendor_specific_params(discoved_api, vend_spec_query_params_n_values): pass_filter = True for k, v in vend_spec_query_params_n_values.items(): for k, v in vend_spec_query_params_n_values.items(): parts = k.split('.') parts = k.split('.') for path in vendor_specific_fields_path: exists, value = nested_key_exists(discoved_api, parts) if parts[0] in path: if exists: path_pieces = path.split('.') if v != value: tmp_body = discoved_api pass_filter = False vs_field = path_pieces[-1] break for path_piece in path_pieces[:-1]: return pass_filter if path_piece.isnumeric(): No newline at end of file path_piece = int(path_piece) v_2 = tmp_body[path_piece] tmp_body = v_2 if parts[1] in tmp_body[vs_field].keys(): if tmp_body[vs_field][parts[1]] != v: return {} else: return {} return discoved_api No newline at end of file