Skip to content

Commit 2567d78

Browse files
author
Mateusz Woźnowski
committed
Add sphinx docs and blocks of methods, models
1 parent da0d9c2 commit 2567d78

File tree

4 files changed

+247
-8
lines changed

4 files changed

+247
-8
lines changed

simpay/baseModel.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from __future__ import annotations
12
from typing import TypeVar, Generic
23
from enum import Enum
34
from pydantic import BaseModel
@@ -15,11 +16,33 @@ class RequestMethod(Enum):
1516

1617

1718
class ResponsePaginationLinks(BaseModel):
19+
"""Pagination links
20+
21+
:param next_page: str | None
22+
Next page link
23+
:param prev_page: str | None
24+
Previous page link
25+
"""
1826
next_page: str | None
1927
prev_page: str | None
2028

2129

2230
class ResponsePagination(BaseModel):
31+
"""Request pagination
32+
33+
:param total: int
34+
Total items in all pages
35+
:param count: int
36+
Count of items at current page
37+
:param per_page: int
38+
Limit of served items at one page
39+
:param current_page: int
40+
Current page
41+
:param total_pages: int
42+
Total pages at pagination
43+
:param links: ResponsePaginationLinks
44+
Pagination links (next page, previous page)
45+
"""
2346
total: int
2447
count: int
2548
per_page: int
@@ -29,6 +52,15 @@ class ResponsePagination(BaseModel):
2952

3053

3154
class Response(Generic[T]):
55+
"""Request response
56+
57+
:param success: bool
58+
Determinate if request has been procesed successfully
59+
:param data: any
60+
Response body data, data can be list of items or object of item
61+
:param pagination: ResponsePagination | none
62+
Pagination
63+
"""
3264
success: bool = False
3365
data: T | None = None
3466
pagination: ResponsePagination | None

simpay/directbilling/models.py

Lines changed: 143 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from __future__ import annotations
12
from datetime import datetime
23
from enum import Enum
34
from pydantic import BaseModel
@@ -33,6 +34,17 @@ class DCB_Provider(Enum):
3334

3435

3536
class DCB_Service_Providers(BaseModel):
37+
"""DCB service available providers
38+
39+
:param tmobile: bool
40+
Provider t-mobile available status, origin key from api's it's 't-mobile'
41+
:param orange: bool
42+
Type of service
43+
:param play: bool
44+
Name of service
45+
:param plus: bool
46+
Prefix of SMS
47+
"""
3648
tmobile: bool
3749
orange: bool
3850
play: bool
@@ -44,6 +56,17 @@ class Config:
4456

4557

4658
class DCB_Service_MaxValues(BaseModel):
59+
"""DCB service max values per single transaction
60+
61+
:param tmobile: str
62+
Value for t-mobile provider, origin key from api's it's 't-mobile'
63+
:param orange: str
64+
Value for orange provider
65+
:param play: str
66+
Value for orange provider
67+
:param plus: str
68+
Value for orange provider
69+
"""
4770
tmobile: str
4871
orange: str
4972
play: str
@@ -55,12 +78,32 @@ class Config:
5578

5679

5780
class DCB_Service_Commission(BaseModel):
81+
"""DCB servicem stages of comission rates
82+
83+
:param commission_0: str
84+
Commision rate from 0,01 PLN to 9,99 PLN amount of transaction
85+
:param commission_9: str
86+
Commision rate from 9 PLN to 24,99 PLN amount of transaction
87+
:param commission_25: str
88+
Commision rate from 25 PLN to max amount of transaction
89+
"""
5890
commission_0: str
5991
commission_9: str
6092
commission_25: str
6193

6294

6395
class DCB_Service_Commissions(BaseModel):
96+
"""DCB service comission rates
97+
98+
:param tmobile: DCB_Service_Commission
99+
Commision rate for t-mobile provider, origin key from api's it's 't-mobile'
100+
:param orange: DCB_Service_Commission
101+
Commision rate for orange provider
102+
:param play: DCB_Service_Commission
103+
Commision rate for play provider
104+
:param plus: DCB_Service_Commission
105+
Commision rate for plus provider
106+
"""
64107
tmobile: DCB_Service_Commission
65108
orange: DCB_Service_Commission
66109
play: DCB_Service_Commission
@@ -72,12 +115,32 @@ class Config:
72115

73116

74117
class DCB_Service_Values(BaseModel):
118+
"""DCB service and transaction values
119+
120+
:param net: float
121+
Amount net
122+
:param gross: float
123+
Amount gross
124+
:param partner: float | None
125+
Partner comission amount from transaction
126+
"""
75127
net: float
76128
gross: float
77129
partner: float | None
78130

79131

80132
class DCB_Service_CalculatedCommissions(BaseModel):
133+
"""DCB service calculated comissions
134+
135+
:param tmobile: DCB_Service_Values | None
136+
Values for t-mobile provider, origin key from api's it's 't-mobile'
137+
:param orange: DCB_Service_Values | None
138+
Values for orange provider
139+
:param play: DCB_Service_Values | None
140+
Values for play provider
141+
:param plus: DCB_Service_Values | None
142+
Values for plus provider
143+
"""
81144
tmobile: DCB_Service_Values | None
82145
orange: DCB_Service_Values | None
83146
play: DCB_Service_Values | None
@@ -89,11 +152,39 @@ class Config:
89152

90153

91154
class DCB_Service_API(BaseModel):
155+
"""DCB service redirection urls
156+
157+
:param complete: str
158+
Redirection url after complete transaction
159+
:param failure: str
160+
Redirection url after failure transaction
161+
"""
92162
complete: str
93163
failure: str
94164

95165

96166
class DCB_Service(BaseModel):
167+
"""DCB service
168+
169+
:param id: str
170+
ID of DirectBilling service
171+
:param name: str
172+
Name of DirectBilling service
173+
:param suffix: str
174+
Suffix
175+
:param status: DCB_Service_Status
176+
Status
177+
:param api: DCB_Service_API
178+
API endpoints
179+
:param providers: DCB_Service_Providers
180+
Available providers
181+
:param commissions: DCB_Service_Commissions
182+
Commisions
183+
:param maxValues: DCB_Service_MaxValues
184+
Max values per transaction
185+
:param created_at: datetime
186+
Creation time of service
187+
"""
97188
id: str
98189
name: str
99190
suffix: str
@@ -106,21 +197,65 @@ class DCB_Service(BaseModel):
106197

107198

108199
class DCB_Transaction_Notify(BaseModel):
200+
"""DCB transaction notification states
201+
202+
:param is_send: str
203+
Status whether notification has been sended
204+
:param last_send_at: str
205+
Date of last notification attempt
206+
:param count: str
207+
Count of notification attemps
208+
"""
109209
is_send: bool
110210
last_send_at: datetime
111211
count: int
112212

113213

114214
class DCB_Transaction_Returns(BaseModel):
215+
"""DCB transaction redirection urls
216+
217+
:param complete: str
218+
URL where customer will be redirected after successful transaction
219+
:param failure: str
220+
URL where customer will be redirected after failure transaction
221+
"""
115222
complete: str
116223
failure: str
117224

118225

119226
class DCB_Transaction(BaseModel):
227+
"""DCB transaction
228+
229+
:param id: str
230+
ID of DirectBilling of transaction
231+
:param status: DCB_Transaction_Status
232+
Status
233+
:param phoneNumber: str | None
234+
Phone number which transaction has been processed, original key from api it's number_from
235+
:param control: str | None
236+
Own custom property
237+
:param value: float | None
238+
Amount of transaction
239+
:param value_netto: float | None
240+
Amount of transaction (presented as netto value)
241+
:param operator: str | None
242+
Operator of transaction
243+
:param returns: DCB_Transaction_Returns | None
244+
Returns endpoints after successful or failure transaction
245+
:param notify: DCB_Transaction_Notify | None
246+
Nofication statuses
247+
:param provider: int | None
248+
ID of transaction provider
249+
:param signature: str | None
250+
Signature of transaction based on sha256
251+
:param created_at: datetime | None
252+
Creation date of transaction
253+
:param updated_at: datetime | None
254+
Update date of transaction
255+
"""
120256
id: str
121257
status: DCB_Transaction_Status
122258
phoneNumber: str | None
123-
control: str | None
124259
value: float | None
125260
value_netto: float | None
126261
values: DCB_Service_Values | None
@@ -139,5 +274,12 @@ class Config:
139274

140275

141276
class DCB_GeneratedTransaction(BaseModel):
277+
"""DCB generating transaction callback
278+
279+
:param transactionId: str
280+
Transaction ID
281+
:param redirectUrl: str
282+
Redirection url for transaction
283+
"""
142284
transactionId: str
143285
redirectUrl: str

simpay/simpay.py

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from __future__ import annotations
12
from .__version__ import VERSION
23
from simpay.baseModel import RequestMethod, Response
34
from simpay.sms.client import SMSClient
@@ -71,15 +72,19 @@ def __init__(
7172
"""
7273
self.DirectBilling: DirectBillingClient = DirectBillingClient(self)
7374

74-
def request(self, method: RequestMethod, uri: str, fields: dict[str, any] | None = None, headers: dict[str, any] | None = None, options: dict[str, any] | None = None) -> Response:
75-
"""Base client of SimPay
75+
def request(self, method: RequestMethod, uri: str, fields: dict[str, any] | None = None, headers: dict[str, any] | None = None, options: dict[str, any] | None = None) -> dict:
76+
"""HTTP request builder
7677
7778
:param method: RequestMethod
7879
HTTP request method (GET, POST, ...)
79-
:param api_password: str
80-
API password from account details
81-
:param timeout: int
82-
Timeout of HTTP request, default its 5 seconds
80+
:param uri: str
81+
API endpoint uri without base url
82+
:param fields: dict[str, any]
83+
HTTP POST fields (converted into JSON body content type)
84+
:param headers: dict[str, any]
85+
HTTP request headers
86+
:param options: dict[str, any]
87+
HTTP request builder options like pagination page, per page items
8388
8489
:return Response body
8590
:rtype dict
@@ -96,7 +101,23 @@ def request(self, method: RequestMethod, uri: str, fields: dict[str, any] | None
96101
raise ClientException(response.status_code)
97102
return response.json()
98103

99-
def requestAllPages(self, method: RequestMethod, uri: str, fields: dict[str, any] | None = None, headers: dict[str, any] | None = None, options: dict[str, any] | None = None) -> object:
104+
def requestAllPages(self, method: RequestMethod, uri: str, fields: dict[str, any] | None = None, headers: dict[str, any] | None = None, options: dict[str, any] | None = None) -> list:
105+
"""HTTP request builder with auto fetch pagination all pages
106+
107+
:param method: RequestMethod
108+
HTTP request method (GET, POST, ...)
109+
:param uri: str
110+
API endpoint uri without base url
111+
:param fields: dict[str, any]
112+
HTTP POST fields (converted into JSON body content type)
113+
:param headers: dict[str, any]
114+
HTTP request headers
115+
:param options: dict[str, any]
116+
HTTP request builder options like pagination page, per page items
117+
118+
:return Response body items
119+
:rtype list
120+
"""
100121
response = self.request(method, uri, fields, headers, options)
101122
responseData = []
102123
if response['success']:

0 commit comments

Comments
 (0)