Loading services/TS29222_CAPIF_API_Provider_Management_API/api_provider_management/core/provider_enrolment_details_api.py +1 −1 Original line number Diff line number Diff line Loading @@ -12,7 +12,7 @@ from .redis_internal_event import RedisInternalEvent from .resources import Resource from .responses import internal_server_error, not_found_error, forbidden_error, make_response, bad_request_error from ..core.sign_certificate import sign_certificate from ..util import dict_to_camel_case, clean_empty, serialize_clean_camel_case from ..util import dict_to_camel_case, clean_empty, serialize_clean_camel_case, negotiate_supported_features class ProviderManagementOperations(Resource): Loading services/TS29222_CAPIF_API_Provider_Management_API/api_provider_management/util.py +14 −0 Original line number Diff line number Diff line Loading @@ -192,3 +192,17 @@ def _deserialize_dict(data, boxed_type): """ return {k: _deserialize(v, boxed_type) for k, v in data.items() } TOTAL_FEATURES = 18 SUPPORTED_FEATURES_HEX = "201" def negotiate_supported_features(client_hex: str) -> str: client_bin = bin(int(client_hex or "0", 16))[2:].zfill(TOTAL_FEATURES)[::-1] server_bin = bin(int(SUPPORTED_FEATURES_HEX, 16))[2:].zfill(TOTAL_FEATURES)[::-1] negotiated_bin = ''.join([ '1' if client_bin[i] == '1' and server_bin[i] == '1' else '0' for i in range(TOTAL_FEATURES) ])[::-1] return hex(int(negotiated_bin, 2))[2:] or "0" No newline at end of file Loading
services/TS29222_CAPIF_API_Provider_Management_API/api_provider_management/core/provider_enrolment_details_api.py +1 −1 Original line number Diff line number Diff line Loading @@ -12,7 +12,7 @@ from .redis_internal_event import RedisInternalEvent from .resources import Resource from .responses import internal_server_error, not_found_error, forbidden_error, make_response, bad_request_error from ..core.sign_certificate import sign_certificate from ..util import dict_to_camel_case, clean_empty, serialize_clean_camel_case from ..util import dict_to_camel_case, clean_empty, serialize_clean_camel_case, negotiate_supported_features class ProviderManagementOperations(Resource): Loading
services/TS29222_CAPIF_API_Provider_Management_API/api_provider_management/util.py +14 −0 Original line number Diff line number Diff line Loading @@ -192,3 +192,17 @@ def _deserialize_dict(data, boxed_type): """ return {k: _deserialize(v, boxed_type) for k, v in data.items() } TOTAL_FEATURES = 18 SUPPORTED_FEATURES_HEX = "201" def negotiate_supported_features(client_hex: str) -> str: client_bin = bin(int(client_hex or "0", 16))[2:].zfill(TOTAL_FEATURES)[::-1] server_bin = bin(int(SUPPORTED_FEATURES_HEX, 16))[2:].zfill(TOTAL_FEATURES)[::-1] negotiated_bin = ''.join([ '1' if client_bin[i] == '1' and server_bin[i] == '1' else '0' for i in range(TOTAL_FEATURES) ])[::-1] return hex(int(negotiated_bin, 2))[2:] or "0" No newline at end of file