Skip to content

Commit f23bdce

Browse files
committed
feature/sdk_python#151 Deprecated SandboxUser and replaced it with SandboxUserPerson/Company. Also cleaned up code.
1 parent 7b8b621 commit f23bdce

File tree

11 files changed

+49
-55
lines changed

11 files changed

+49
-55
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ Creating objects through the API requires an `ApiContext`, a `requestMap` and id
8282
dependencies (such as User ID required for accessing a Monetary Account). Optionally, custom headers
8383
can be passed to requests.
8484

85-
payment_id = endpoint.Payment.create(
85+
payment_id = Payment.create(
8686
amount=Amount(amount_string, self._CURRENCY_EURL),
8787
counterparty_alias=Pointer(self._POINTER_TYPE_EMAIL, recipient),
8888
description=description
@@ -109,7 +109,7 @@ See [`tinker/list_all_payment`](https://github.com/bunq/tinker_python/blob/2182b
109109
Updating objects through the API goes the same way as creating objects, except that also the object to update identifier
110110
(ID or UUID) is needed.
111111

112-
endpoint.Card.update(
112+
Card.update(
113113
card_id=int(card_id),
114114
monetary_account_current_id=int(account_id)
115115
)
@@ -130,7 +130,7 @@ passed to requests.
130130
Listing objects through the API requires an `ApiContext` and identifiers of all dependencies (such as User ID required
131131
for accessing a Monetary Account). Optionally, custom headers can be passed to requests.
132132

133-
users = endpoint.User.list(api_context)
133+
users = User.list(api_context)
134134

135135
##### Example
136136
See [`UserListExample.py`](./examples/user_list_example.py)

bunq/__init__.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from bunq.sdk.http.pagination import Pagination
66
from bunq.sdk.json import converter
77
from bunq.sdk.model.core.anchor_object_interface import AnchorObjectInterface
8+
from bunq.sdk.model.generated.object_ import Geolocation, ShareDetail, MonetaryAccountReference
89
from bunq.sdk.util.type_alias import T
910

1011

@@ -36,9 +37,9 @@ def initialize_converter() -> None:
3637
converter.register_adapter(InstallationContext, InstallationContextAdapter)
3738
converter.register_adapter(ApiEnvironmentType, ApiEnvironmentTypeAdapter)
3839
converter.register_adapter(float, FloatAdapter)
39-
converter.register_adapter(object_.Geolocation, GeolocationAdapter)
40-
converter.register_adapter(object_.MonetaryAccountReference, MonetaryAccountReferenceAdapter)
41-
converter.register_adapter(object_.ShareDetail, ShareDetailAdapter)
40+
converter.register_adapter(Geolocation, GeolocationAdapter)
41+
converter.register_adapter(MonetaryAccountReference, MonetaryAccountReferenceAdapter)
42+
converter.register_adapter(ShareDetail, ShareDetailAdapter)
4243
converter.register_adapter(datetime.datetime, DateTimeAdapter)
4344
converter.register_adapter(Pagination, PaginationAdapter)
4445

bunq/sdk/context/api_context.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@
1212
from bunq.sdk.exception.bunq_exception import BunqException
1313
from bunq.sdk.json import converter
1414
from bunq.sdk.model.core.payment_service_provider_credential_internal import PaymentServiceProviderCredentialInternal
15-
from bunq.sdk.model.generated import endpoint
16-
from bunq.sdk.model.generated.endpoint import UserCredentialPasswordIp
15+
from bunq.sdk.model.generated.endpoint import UserCredentialPasswordIp, Session
1716
from bunq.sdk.security import security
1817

1918
if typing.TYPE_CHECKING:
@@ -221,7 +220,7 @@ def close_session(self) -> None:
221220
self._drop_session_context()
222221

223222
def _delete_session(self) -> None:
224-
endpoint.Session.delete(self._SESSION_ID_DUMMY)
223+
Session.delete(self._SESSION_ID_DUMMY)
225224

226225
@property
227226
def environment_type(self) -> ApiEnvironmentType:

bunq/sdk/context/user_context.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
from bunq import T
21
from bunq.sdk.exception.bunq_exception import BunqException
32
from bunq.sdk.model.core.bunq_model import BunqModel
4-
from bunq.sdk.model.generated import endpoint
5-
from bunq.sdk.model.generated.endpoint import UserPerson, UserCompany, UserApiKey, MonetaryAccountBank
3+
from bunq.sdk.model.generated.endpoint import UserPerson, UserCompany, UserApiKey, MonetaryAccountBank, User, \
4+
UserPaymentServiceProvider
65

76

87
class UserContext:
@@ -22,19 +21,19 @@ def __init__(self, user_id: int, user: BunqModel) -> None:
2221

2322
@staticmethod
2423
def __get_user_object() -> BunqModel:
25-
return endpoint.User.list().value[0].get_referenced_object()
24+
return User.list().value[0].get_referenced_object()
2625

2726
def _set_user(self, user: BunqModel) -> None:
28-
if isinstance(user, endpoint.UserPerson):
27+
if isinstance(user, UserPerson):
2928
self._user_person = user
3029

31-
elif isinstance(user, endpoint.UserCompany):
30+
elif isinstance(user, UserCompany):
3231
self._user_company = user
3332

34-
elif isinstance(user, endpoint.UserApiKey):
33+
elif isinstance(user, UserApiKey):
3534
self._user_api_key = user
3635

37-
elif isinstance(user, endpoint.UserPaymentServiceProvider):
36+
elif isinstance(user, UserPaymentServiceProvider):
3837
self._user_payment_service_provider = user
3938

4039
else:
@@ -45,7 +44,7 @@ def init_main_monetary_account(self) -> None:
4544
if self._user_payment_service_provider is not None:
4645
return
4746

48-
all_monetary_account = endpoint.MonetaryAccountBank.list().value
47+
all_monetary_account = MonetaryAccountBank.list().value
4948

5049
for account in all_monetary_account:
5150
if account.status == self._STATUS_ACTIVE:

bunq/sdk/json/monetary_account_reference_adapter.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,15 @@
11
from typing import Type, Dict
22

33
from bunq.sdk.json import converter
4-
from bunq.sdk.model.generated import object_
5-
from bunq.sdk.model.generated.object_ import MonetaryAccountReference
4+
from bunq.sdk.model.generated.object_ import MonetaryAccountReference, LabelMonetaryAccount
65

76

87
class MonetaryAccountReferenceAdapter(converter.JsonAdapter):
98
@classmethod
109
def deserialize(cls,
1110
target_class: Type[MonetaryAccountReference],
1211
obj: Dict) -> MonetaryAccountReference:
13-
label_monetary_account = converter.deserialize(
14-
object_.LabelMonetaryAccount,
15-
obj
16-
)
12+
label_monetary_account = converter.deserialize(LabelMonetaryAccount, obj)
1713

1814
return target_class.create_from_label_monetary_account(label_monetary_account)
1915

bunq/sdk/json/session_server_adapter.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from bunq.sdk.model.core.id import Id
66
from bunq.sdk.model.core.session_server import SessionServer
77
from bunq.sdk.model.core.session_token import SessionToken
8-
from bunq.sdk.model.generated import endpoint
8+
from bunq.sdk.model.generated.endpoint import UserCompany, UserPerson, UserApiKey, UserPaymentServiceProvider
99

1010

1111
class SessionServerAdapter(converter.JsonAdapter):
@@ -65,25 +65,25 @@ def deserialize(cls,
6565
if cls._FIELD_USER_COMPANY in user_dict_wrapped:
6666
session_server.__dict__[cls._ATTRIBUTE_USER_COMPANY] = \
6767
converter.deserialize(
68-
endpoint.UserCompany,
68+
UserCompany,
6969
user_dict_wrapped[cls._FIELD_USER_COMPANY]
7070
)
7171
elif cls._FIELD_USER_PERSON in user_dict_wrapped:
7272
session_server.__dict__[cls._ATTRIBUTE_USER_PERSON] = \
7373
converter.deserialize(
74-
endpoint.UserPerson,
74+
UserPerson,
7575
user_dict_wrapped[cls._FIELD_USER_PERSON]
7676
)
7777
elif cls._FIELD_USER_API_KEY in user_dict_wrapped:
7878
session_server.__dict__[cls._ATTRIBUTE_USER_API_KEY] = \
7979
converter.deserialize(
80-
endpoint.UserApiKey,
80+
UserApiKey,
8181
user_dict_wrapped[cls._FIELD_USER_API_KEY]
8282
)
8383
elif cls._FIELD_USER_PAYMENT_SERVER_PROVIDER in user_dict_wrapped:
8484
session_server.__dict__[cls._ATTRIBUTE_USER_PAYMENT_SERVER_PROVIDER] = \
8585
converter.deserialize(
86-
endpoint.UserPaymentServiceProvider,
86+
UserPaymentServiceProvider,
8787
user_dict_wrapped[cls._FIELD_USER_PAYMENT_SERVER_PROVIDER]
8888
)
8989
else:

bunq/sdk/json/share_detail_adapter.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
from typing import Dict, Type, Optional
22

33
from bunq.sdk.json import converter
4-
from bunq.sdk.model.generated import object_
5-
from bunq.sdk.model.generated.object_ import ShareDetail
4+
from bunq.sdk.model.generated.object_ import ShareDetail, ShareDetailPayment, ShareDetailReadOnly, \
5+
ShareDetailDraftPayment
66

77

88
class ShareDetailAdapter(converter.JsonAdapter):
@@ -21,24 +21,24 @@ def deserialize(cls,
2121
target_class: Type[ShareDetail],
2222
obj: Dict) -> ShareDetail:
2323
"""
24-
:type target_class: object_.ShareDetail|type
24+
:type target_class: ShareDetail|type
2525
:type obj: dict
2626
27-
:rtype: object_.ShareDetail
27+
:rtype: ShareDetail
2828
"""
2929

3030
share_detail = target_class.__new__(target_class)
3131
share_detail.__dict__ = {
3232
cls._ATTRIBUTE_PAYMENT: converter.deserialize(
33-
object_.ShareDetailPayment,
33+
ShareDetailPayment,
3434
cls._get_field_or_none(cls._FIELD_DRAFT_PAYMENT, obj)
3535
),
3636
cls._ATTRIBUTE_READ_ONLY: converter.deserialize(
37-
object_.ShareDetailReadOnly,
37+
ShareDetailReadOnly,
3838
cls._get_field_or_none(cls._FIELD_READ_ONLY, obj)
3939
),
4040
cls._ATTRIBUTE_DRAFT_PAYMENT: converter.deserialize(
41-
object_.ShareDetailDraftPayment,
41+
ShareDetailDraftPayment,
4242
cls._get_field_or_none(cls._FIELD_DRAFT_PAYMENT, obj)
4343
),
4444
}

bunq/sdk/util/util.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@
99
from bunq.sdk.exception.bunq_exception import BunqException
1010
from bunq.sdk.http.api_client import ApiClient
1111
from bunq.sdk.model.generated import endpoint
12-
from bunq.sdk.model.generated.endpoint import SandboxUser
12+
from bunq.sdk.model.generated.endpoint import SandboxUserPerson
1313

1414
__UNIQUE_REQUEST_ID = "uniqueness-is-required"
1515
__FIELD_API_KEY = "ApiKey"
1616
__INDEX_FIRST = 0
1717
__FIELD_RESPONSE = "Response"
18-
__ENDPOINT_SANDBOX_USER = "sandbox-user"
18+
__ENDPOINT_SANDBOX_USER_PERSON = "sandbox-user-person"
1919

2020
_ERROR_COULD_NOT_CREATE_NEW_SANDBOX_USER = "Could not create new sandbox user."
2121

@@ -29,8 +29,8 @@ def automatic_sandbox_install() -> ApiContext:
2929
)
3030

3131

32-
def __generate_new_sandbox_user() -> SandboxUser:
33-
url = ApiEnvironmentType.SANDBOX.uri_base + __ENDPOINT_SANDBOX_USER
32+
def __generate_new_sandbox_user() -> SandboxUserPerson:
33+
url = ApiEnvironmentType.SANDBOX.uri_base + __ENDPOINT_SANDBOX_USER_PERSON
3434

3535
headers = {
3636
ApiClient.HEADER_REQUEST_ID: __UNIQUE_REQUEST_ID,
@@ -44,7 +44,7 @@ def __generate_new_sandbox_user() -> SandboxUser:
4444

4545
if response.status_code is ApiClient.STATUS_CODE_OK:
4646
response_json = json.loads(response.text)
47-
return endpoint.SandboxUser.from_json(
47+
return SandboxUserPerson.from_json(
4848
json.dumps(response_json[__FIELD_RESPONSE][__INDEX_FIRST][
4949
__FIELD_API_KEY]))
5050

tests/model/generated/endpoint/test_attachment_public.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from typing import AnyStr
22

33
from bunq.sdk.http.api_client import ApiClient
4-
from bunq.sdk.model.generated import endpoint
4+
from bunq.sdk.model.generated.endpoint import AttachmentPublicContent, AttachmentPublic
55
from tests.bunq_test import BunqSdkTestCase
66

77

@@ -25,8 +25,8 @@ def test_file_upload_and_retrieval(self):
2525
self._ATTACHMENT_DESCRIPTION,
2626
}
2727

28-
attachment_uuid = endpoint.AttachmentPublic.create(self.attachment_contents, custom_headers).value
29-
contents_from_response = endpoint.AttachmentPublicContent.list(attachment_uuid).value
28+
attachment_uuid = AttachmentPublic.create(self.attachment_contents, custom_headers).value
29+
contents_from_response = AttachmentPublicContent.list(attachment_uuid).value
3030

3131
self.assertEqual(self.attachment_contents, contents_from_response)
3232

tests/model/generated/endpoint/test_payment.py

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from typing import List
22

3-
from bunq.sdk.model.generated import endpoint
4-
from bunq.sdk.model.generated.endpoint import Payment
3+
from bunq.sdk.model.generated.endpoint import Payment, PaymentBatch, BunqResponseInt, BunqResponsePaymentBatch
54
from bunq.sdk.model.generated.object_ import Amount, Pointer
65
from tests.bunq_test import BunqSdkTestCase
76

@@ -29,7 +28,7 @@ def test_payment_to_other_user(self):
2928
without errors
3029
"""
3130

32-
endpoint.Payment.create(
31+
Payment.create(
3332
Amount(self._PAYMENT_AMOUNT_EUR, self._PAYMENT_CURRENCY),
3433
self._get_pointer_bravo(),
3534
self._PAYMENT_DESCRIPTION
@@ -43,21 +42,21 @@ def test_payment_to_other_account(self):
4342
without errors
4443
"""
4544

46-
endpoint.Payment.create(
45+
Payment.create(
4746
Amount(self._PAYMENT_AMOUNT_EUR, self._PAYMENT_CURRENCY),
4847
self._get_alias_second_account(),
4948
self._PAYMENT_DESCRIPTION
5049
)
5150

5251
def test_payment_batch(self):
53-
response_create = endpoint.PaymentBatch.create(self.__create_payment_list())
52+
response_create = PaymentBatch.create(self.__create_payment_list())
5453

55-
self.assertIsInstance(response_create, endpoint.BunqResponseInt)
54+
self.assertIsInstance(response_create, BunqResponseInt)
5655
self.assertIsNotNone(response_create)
5756

58-
response_get = endpoint.PaymentBatch.get(response_create.value)
57+
response_get = PaymentBatch.get(response_create.value)
5958

60-
self.assertIsInstance(response_get, endpoint.BunqResponsePaymentBatch)
59+
self.assertIsInstance(response_get, BunqResponsePaymentBatch)
6160
self.assertIsNotNone(response_get)
6261
self.assertFalse(response_get.value.is_all_field_none())
6362

@@ -66,13 +65,13 @@ def __create_payment_list(self) -> List[Payment]:
6665

6766
while len(all_payment) < self._MAXIMUM_PAYMENT_IN_BATCH:
6867
all_payment.append(
69-
endpoint.Payment(
68+
Payment(
7069
Amount(self._PAYMENT_AMOUNT_EUR, self._PAYMENT_CURRENCY),
7170
Pointer(self._POINTER_EMAIL, self._EMAIL_BRAVO),
7271
self._PAYMENT_DESCRIPTION
7372
)
7473
)
7574
self.assertIsInstance(all_payment, List)
76-
self.assertIsInstance(all_payment[0], endpoint.Payment)
75+
self.assertIsInstance(all_payment[0], Payment)
7776

7877
return all_payment

0 commit comments

Comments
 (0)