Exemplo n.º 1
0
    def from_json(cls, json_str: str) -> ApiContext:
        """
        Creates an ApiContext instance from JSON string.

        """

        return converter.json_to_class(ApiContext, json_str)
Exemplo n.º 2
0
    def create_with_api_context(
            cls,
            client_payment_service_provider_certificate: str,
            client_payment_service_provider_certificate_chain: str,
            client_public_key_signature: str,
            api_context: ApiContext,
            all_custom_header=None) -> UserCredentialPasswordIp:
        request_map = {
            cls.FIELD_CLIENT_PAYMENT_SERVICE_PROVIDER_CERTIFICATE:
            client_payment_service_provider_certificate,
            cls.FIELD_CLIENT_PAYMENT_SERVICE_PROVIDER_CERTIFICATE_CHAIN:
            client_payment_service_provider_certificate_chain,
            cls.FIELD_CLIENT_PUBLIC_KEY_SIGNATURE: client_public_key_signature
        }

        if all_custom_header is None:
            all_custom_header = {}

        api_client = ApiClient(api_context)
        request_bytes = converter.class_to_json(request_map).encode()
        endpoint_url = cls._ENDPOINT_URL_CREATE
        response_raw = api_client.post(endpoint_url, request_bytes,
                                       all_custom_header)

        response_body = converter.json_to_class(
            dict, response_raw.body_bytes.decode())
        response_body_dict = converter.deserialize(
            cls, response_body[cls._FIELD_RESPONSE])[0]

        return UserCredentialPasswordIp.from_json(
            json.dumps(response_body_dict[cls._OBJECT_TYPE_GET]))
Exemplo n.º 3
0
    def _from_json_array_nested(
            cls, response_raw: BunqResponseRaw) -> BunqResponse[BunqModel]:
        json = response_raw.body_bytes.decode()
        obj = converter.json_to_class(dict, json)
        value = converter.deserialize(cls, obj[cls._FIELD_RESPONSE])

        return BunqResponse(value, response_raw.headers)
Exemplo n.º 4
0
    def from_json(cls, class_of_object: Type[T],
                  response_raw: BunqResponseRaw):
        response_item_object = converter.deserialize(class_of_object,
                                                     response_raw)
        response_value = converter.json_to_class(class_of_object,
                                                 response_item_object)

        return BunqResponse(response_value, response_raw.headers)
Exemplo n.º 5
0
    def _fetch_all_error_message(self, response: Response) -> List[str]:
        response_content_string = response.content.decode()

        try:
            error_dict = converter.json_to_class(dict, response_content_string)

            return self._fetch_error_descriptions(error_dict)
        except ValueError:
            return [response_content_string]
Exemplo n.º 6
0
    def _from_json(cls,
                   response_raw: BunqResponseRaw,
                   wrapper: str = None) -> BunqResponse[BunqModel]:
        json = response_raw.body_bytes.decode()
        obj = converter.json_to_class(dict, json)
        value = converter.deserialize(
            cls, cls._unwrap_response_single(obj, wrapper))

        return BunqResponse(value, response_raw.headers)
Exemplo n.º 7
0
    def from_json(cls, json_str):
        """
        Creates an ApiContext instance from JSON string.

        :type json_str: str

        :rtype: ApiContext
        """

        return converter.json_to_class(ApiContext, json_str)
Exemplo n.º 8
0
    def _process_for_uuid(cls,
                          response_raw: BunqResponseRaw) -> BunqResponse[str]:
        from bunq.sdk.model.core.uuid import Uuid

        json = response_raw.body_bytes.decode()
        obj = converter.json_to_class(dict, json)
        uuid = converter.deserialize(
            Uuid, cls._unwrap_response_single(obj, cls._FIELD_UUID))

        return BunqResponse(uuid.uuid, response_raw.headers)
Exemplo n.º 9
0
    def _process_for_id(cls,
                        response_raw: BunqResponseRaw) -> BunqResponse[int]:
        from bunq.sdk.model.core.id import Id

        json = response_raw.body_bytes.decode()
        obj = converter.json_to_class(dict, json)
        id_ = converter.deserialize(
            Id, cls._unwrap_response_single(obj, cls._FIELD_ID))

        return BunqResponse(id_.id_, response_raw.headers)
Exemplo n.º 10
0
    def _from_json_array_nested(cls, response_raw):
        """
        :type response_raw: client.BunqResponseRaw

        :rtype: bunq.sdk.client.BunqResponse[cls]
        """

        json = response_raw.body_bytes.decode()
        obj = converter.json_to_class(dict, json)
        value = converter.deserialize(cls, obj[cls._FIELD_RESPONSE])

        return client.BunqResponse(value, response_raw.headers)
Exemplo n.º 11
0
    def _process_for_uuid(cls, response_raw):
        """
        :type response_raw: client.BunqResponseRaw

        :rtype: client.BunqResponse[str]
        """

        json = response_raw.body_bytes.decode()
        obj = converter.json_to_class(dict, json)
        uuid = converter.deserialize(
            Uuid, cls._unwrap_response_single(obj, cls._FIELD_UUID))

        return client.BunqResponse(uuid.uuid, response_raw.headers)
Exemplo n.º 12
0
    def _process_for_id(cls, response_raw):
        """
        :type response_raw: client.BunqResponseRaw

        :rtype: client.BunqResponse[int]
        """

        json = response_raw.body_bytes.decode()
        obj = converter.json_to_class(dict, json)
        id_ = converter.deserialize(
            Id, cls._unwrap_response_single(obj, cls._FIELD_ID))

        return client.BunqResponse(id_.id_, response_raw.headers)
Exemplo n.º 13
0
    def _from_json(cls, response_raw, wrapper=None):
        """
        :type response_raw: client.BunqResponseRaw
        :type wrapper: str|None

        :rtype: client.BunqResponse[cls]
        """

        json = response_raw.body_bytes.decode()
        obj = converter.json_to_class(dict, json)
        value = converter.deserialize(
            cls, cls._unwrap_response_single(obj, wrapper))

        return client.BunqResponse(value, response_raw.headers)
Exemplo n.º 14
0
    def _fetch_error_messages(self, response):
        """
        :type response: requests.Response

        :rtype: list[str]
        """

        response_content_string = response.content.decode()

        try:
            error_dict = converter.json_to_class(dict, response_content_string)

            return self._fetch_error_descriptions(error_dict)
        except JSONDecodeError:
            return [response_content_string]
Exemplo n.º 15
0
    def _from_json_list(cls, response_raw, wrapper=None):
        """
        :type response_raw: client.BunqResponseRaw
        :type wrapper: str|None

        :rtype: client.BunqResponse[list[cls]]
        """

        json = response_raw.body_bytes.decode()
        obj = converter.json_to_class(dict, json)
        array = obj[cls._FIELD_RESPONSE]
        array_deserialized = []

        for item in array:
            item_unwrapped = item if wrapper is None else item[wrapper]
            item_deserialized = converter.deserialize(cls, item_unwrapped)
            array_deserialized.append(item_deserialized)

        pagination = converter.deserialize(client.Pagination,
                                           obj[cls._FIELD_PAGINATION])

        return client.BunqResponse(array_deserialized, response_raw.headers,
                                   pagination)
Exemplo n.º 16
0
    def _from_json_list(cls,
                        response_raw: BunqResponseRaw,
                        wrapper: str = None) -> BunqResponse[List[T]]:
        from bunq import Pagination

        json = response_raw.body_bytes.decode()
        obj = converter.json_to_class(dict, json)
        array = obj[cls._FIELD_RESPONSE]
        array_deserialized = []

        for item in array:
            item_unwrapped = item if wrapper is None else item[wrapper]
            item_deserialized = converter.deserialize(cls, item_unwrapped)
            array_deserialized.append(item_deserialized)

        pagination = None

        if cls._FIELD_PAGINATION in obj:
            pagination = converter.deserialize(Pagination,
                                               obj[cls._FIELD_PAGINATION])

        return BunqResponse(array_deserialized, response_raw.headers,
                            pagination)