Skip to content

Commit abaaff6

Browse files
authored
Create platforms resource (#268)
* platforms * lint * fix * init * Fix * reqs * cov * More fields for platforms * v * versions * version and ctype change * adding fields * v * version * fields * Lint * version * Fix * version * version * empty
1 parent 6f06ddc commit abaaff6

File tree

7 files changed

+150
-2
lines changed

7 files changed

+150
-2
lines changed

cuenca/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
'KYCVerification',
2121
'LimitedWallet',
2222
'LoginToken',
23+
'Platform',
2324
'Saving',
2425
'ServiceProvider',
2526
'Session',
@@ -61,6 +62,7 @@
6162
KYCVerification,
6263
LimitedWallet,
6364
LoginToken,
65+
Platform,
6466
Saving,
6567
ServiceProvider,
6668
Session,

cuenca/resources/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
'KYCVerification',
2020
'LimitedWallet',
2121
'LoginToken',
22+
'Platform',
2223
'Saving',
2324
'ServiceProvider',
2425
'Session',
@@ -53,6 +54,7 @@
5354
from .kyc_verifications import KYCVerification
5455
from .limited_wallets import LimitedWallet
5556
from .login_tokens import LoginToken
57+
from .platforms import Platform
5658
from .resources import RESOURCES
5759
from .savings import Saving
5860
from .service_providers import ServiceProvider
@@ -103,6 +105,7 @@
103105
WalletTransaction,
104106
WhatsappTransfer,
105107
Webhook,
108+
Platform,
106109
]
107110
for resource_cls in resource_classes:
108111
RESOURCES[resource_cls._resource] = resource_cls # type: ignore

cuenca/resources/platforms.py

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
import datetime as dt
2+
from typing import ClassVar, Optional, cast
3+
4+
from cuenca_validations.types import Country, PlatformRequest, State
5+
6+
from ..http import Session, session as global_session
7+
from .base import Creatable
8+
9+
10+
class Platform(Creatable):
11+
_resource: ClassVar = 'platforms'
12+
13+
created_at: dt.datetime
14+
name: str
15+
rfc_curp: Optional[str] = None
16+
establishment_date: Optional[dt.date] = None
17+
country: Optional[Country] = None
18+
state: Optional[State] = None
19+
economic_activity: Optional[str] = None
20+
email_address: Optional[str] = None
21+
phone_number: Optional[str] = None
22+
23+
class Config:
24+
fields = {
25+
'name': {'description': 'name of the platform being created'},
26+
'rfc_curp': {'description': 'RFC or CURP of the platform'},
27+
'establishment_date': {
28+
'description': 'when the platform was established'
29+
},
30+
'country': {'description': 'country where the platform resides'},
31+
'state': {'description': 'state where the platform resides'},
32+
'economic_activity': {'description': 'what the platform does'},
33+
'phone_number': {
34+
'description': 'phone number to contact the platform'
35+
},
36+
'email_address': {
37+
'description': 'email address to contact the platform'
38+
},
39+
}
40+
schema_extra = {
41+
'example': {
42+
'id': 'PT0123456789',
43+
'name': 'Arteria',
44+
'created_at': '2021-08-24T14:15:22Z',
45+
'rfc_curp': 'ART123456FFF',
46+
'establishment_date': '2021-08-24T14:15:22Z',
47+
'country': 'MX',
48+
'state': 'DF',
49+
'economic_activity': 'fiinances and technologies',
50+
'phone_number': '+525555555555',
51+
'email_address': 'art@eria.com',
52+
}
53+
}
54+
55+
@classmethod
56+
def create(
57+
cls,
58+
name: str,
59+
rfc_curp: Optional[str] = None,
60+
establishment_date: Optional[str] = None,
61+
country: Optional[Country] = None,
62+
state: Optional[State] = None,
63+
economic_activity: Optional[str] = None,
64+
phone_number: Optional[str] = None,
65+
email_address: Optional[str] = None,
66+
*,
67+
session: Session = global_session,
68+
) -> 'Platform':
69+
req = PlatformRequest(
70+
name=name,
71+
rfc_curp=rfc_curp,
72+
establishment_date=establishment_date,
73+
country=country,
74+
state=state,
75+
economic_activity=economic_activity,
76+
phone_number=phone_number,
77+
email_address=email_address,
78+
)
79+
return cast('Platform', cls._create(session=session, **req.dict()))

cuenca/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
__version__ = '0.10.1'
1+
__version__ = '0.11.0'
22
CLIENT_VERSION = __version__
33
API_VERSION = '2020-03-19'

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
requests==2.27.1
2-
cuenca-validations==0.10.9
2+
cuenca-validations==0.10.10
33
dataclasses>=0.7;python_version<"3.7"
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
interactions:
2+
- request:
3+
body: '{"name": "Test"}'
4+
headers:
5+
Accept:
6+
- '*/*'
7+
Accept-Encoding:
8+
- gzip, deflate
9+
Authorization:
10+
- DUMMY
11+
Connection:
12+
- keep-alive
13+
Content-Length:
14+
- '16'
15+
Content-Type:
16+
- application/json
17+
User-Agent:
18+
- cuenca-python/0.10.1.dev2
19+
X-Cuenca-Api-Version:
20+
- '2020-03-19'
21+
X-Cuenca-LoginId:
22+
- ULev1mLmNST6ie3wcket7c-w
23+
method: POST
24+
uri: https://sandbox.cuenca.com/platforms
25+
response:
26+
body:
27+
string: '{"id":"PTE_7V8Wj2Rau85dTgtlgG8w","created_at":"2022-06-02T23:42:25.491767","name":"Test"}'
28+
headers:
29+
Connection:
30+
- keep-alive
31+
Content-Length:
32+
- '89'
33+
Content-Type:
34+
- application/json
35+
Date:
36+
- Thu, 02 Jun 2022 23:42:25 GMT
37+
X-Request-Time:
38+
- 'value: 0.447'
39+
x-amz-apigw-id:
40+
- THijNFxtIAMFTpA=
41+
x-amzn-Remapped-Connection:
42+
- keep-alive
43+
x-amzn-Remapped-Content-Length:
44+
- '89'
45+
x-amzn-Remapped-Date:
46+
- Thu, 02 Jun 2022 23:42:25 GMT
47+
x-amzn-Remapped-Server:
48+
- nginx/1.22.0
49+
x-amzn-RequestId:
50+
- 506fba75-65ae-4d29-896d-8f5838835721
51+
status:
52+
code: 201
53+
message: Created
54+
version: 1

tests/resources/test_platforms.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import pytest
2+
3+
from cuenca.resources import Platform
4+
5+
6+
@pytest.mark.vcr
7+
def test_platforms_create() -> None:
8+
platform = Platform.create(name='Test')
9+
assert platform.id
10+
assert platform.name == 'Test'

0 commit comments

Comments
 (0)