Source code for worldline.acquiring.sdk.api_resource

from typing import Mapping, Optional

from .communicator import Communicator


[docs] class ApiResource(object): """ Base class of all Worldline Acquiring platform API resources. """
[docs] def __init__(self, parent: Optional['ApiResource'] = None, communicator: Optional[Communicator] = None, path_context: Optional[Mapping[str, str]] = None): """ The parent and/or communicator must be given. """ if not parent and not communicator: raise ValueError("parent and/or communicator is required") self.__parent = parent self.__communicator = communicator if communicator else parent._communicator self.__path_context = path_context
@property def _communicator(self) -> Communicator: return self.__communicator def _instantiate_uri(self, uri: str, path_context: Optional[Mapping[str, str]]) -> str: uri = self.__replace_all(uri, path_context) uri = self.__instantiate_uri(uri) return uri def __instantiate_uri(self, uri: str) -> str: uri = self.__replace_all(uri, self.__path_context) if self.__parent is not None: uri = self.__parent.__instantiate_uri(uri) return uri @staticmethod def __replace_all(uri: str, path_context: Optional[Mapping[str, str]]) -> str: if path_context: for key, value in path_context.items(): uri = uri.replace("{" + key + "}", value) return uri