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

        """

        return converter.json_to_class(ApiContext, json_str)
Exemple #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]))
Exemple #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)
Exemple #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)
Exemple #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]
Exemple #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)
Exemple #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)
Exemple #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)
Exemple #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)
Exemple #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)
Exemple #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)
Exemple #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)
Exemple #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)
Exemple #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]
Exemple #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)
Exemple #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)