dexter has uploaded this change for review. ( https://gerrit.osmocom.org/c/pysim/+/42101?usp=email )
Change subject: esim/http_json_api: add alternative API interface (follow up) ......................................................................
esim/http_json_api: add alternative API interface (follow up)
This is a follow up patch to change: I2a5d4b59b12e08d5eae7a1215814d3a69c8921f6
- do not ignore length of kwargs - fix role parameter (roles other than 'legacy_client' can be used now) - use startswith instead of match
Related: SYS#7866 Change-Id: Ifae13e82d671ff09bddf771f063a388d2ab283eb --- M pySim/esim/http_json_api.py 1 file changed, 3 insertions(+), 5 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/01/42101/1
diff --git a/pySim/esim/http_json_api.py b/pySim/esim/http_json_api.py index 94e60cb..cd95e0d 100644 --- a/pySim/esim/http_json_api.py +++ b/pySim/esim/http_json_api.py @@ -19,7 +19,6 @@ import requests import logging import json -from re import match from typing import Optional import base64 from twisted.web.server import Request @@ -211,7 +210,7 @@ # additional custom HTTP headers (server responses) extra_http_res_headers = {}
- def __new__(cls, *args, role = None, **kwargs): + def __new__(cls, *args, role = 'legacy_client', **kwargs): """ Args: args: (see JsonHttpApiClient and JsonHttpApiServer) @@ -221,14 +220,13 @@
# Create a dictionary with the class attributes of this class (the properties listed above and the encode_ # decode_ methods below). The dictionary will not include any dunder/magic methods - cls_attr = { attr_name: getattr(cls, attr_name) for attr_name in dir(cls) if not match("__.*__", attr_name) } + cls_attr = {attr_name: getattr(cls, attr_name) for attr_name in dir(cls) if not attr_name.startswith('__')}
# Normal instantiation as JsonHttpApiFunction: - if len(args) == 0: + if len(args) == 0 and len(kwargs) == 0: return type(cls.__name__, (abc.ABC,), cls_attr)()
# Instantiation as as JsonHttpApiFunction with a JsonHttpApiClient or JsonHttpApiServer base - role = kwargs.get('role', 'legacy_client') if role == 'legacy_client': # Deprecated: With the advent of the server role (JsonHttpApiServer) the API had to be changed. To maintain # compatibility with existing code (out-of-tree) the original behaviour and API interface and behaviour had