mirror of
https://github.com/yawaflua/Py-SPW.git
synced 2025-12-18 03:06:28 +02:00
Add more pre-checkers, docstrings
- add SpwCardNotFound error to `send_transaction()` - Add balance checker to `send_transactions()` - Made working docstrings - Correction errors in Parameters
This commit is contained in:
@@ -1,45 +1,83 @@
|
||||
from pydantic import BaseModel, validator
|
||||
import validators
|
||||
|
||||
from . import errors as err
|
||||
|
||||
|
||||
class Payment(BaseModel):
|
||||
"""
|
||||
Класс параметров оплаты.
|
||||
|
||||
:param amount: Сумма которую должен оплатить пользователь.
|
||||
:type amount: int
|
||||
|
||||
:param redirectUrl: Ссылка на которую перенаправит пользователя после успешной оплаты.
|
||||
:type redirectUrl: str
|
||||
|
||||
:param webhookUrl: Ссылка вебхука, туда придет сообщение о успешной оплате.
|
||||
:type webhookUrl: str
|
||||
|
||||
:param data: Полезные данные, которые вы хотите получить в будущем вместе с вебхуком.
|
||||
:type data: str
|
||||
|
||||
:raises BigAmountError: Запрашиваемая сумма слишком большая *(макс. 1728)*
|
||||
:raises LengthError: Строка data слишком длинная *(макс. 100)*
|
||||
:raises IsNotURLError: Параметр не является URL
|
||||
"""
|
||||
|
||||
amount: int
|
||||
redirectUrl: str
|
||||
webhookUrl: str
|
||||
data: str
|
||||
|
||||
@validator('amount')
|
||||
def max_amount(cls, value: int):
|
||||
def _max_amount(cls, value: int):
|
||||
if value > 1728:
|
||||
raise ValueError('amount must be <= 1728')
|
||||
raise err.BigAmountError()
|
||||
return value
|
||||
|
||||
@validator('data')
|
||||
def data_size(cls, value):
|
||||
def _data_size(cls, value):
|
||||
if len(value) > 100:
|
||||
raise ValueError('data length must be <=100.')
|
||||
raise err.LengthError(100)
|
||||
return value
|
||||
|
||||
@validator('redirectUrl', 'webhookUrl')
|
||||
def verify_url(cls, value: str):
|
||||
def _verify_url(cls, value: str):
|
||||
if validators.url(value):
|
||||
return value
|
||||
raise ValueError('is not url')
|
||||
raise err.IsNotURLError()
|
||||
|
||||
|
||||
class Transaction(BaseModel):
|
||||
"""
|
||||
Класс параметров транзакции.
|
||||
|
||||
:param receiver: Карта получателя транзакции.
|
||||
:type receiver: str
|
||||
|
||||
:param amount: Сумма которую должен оплатить пользователь.
|
||||
:type amount: int
|
||||
|
||||
:param comment: Комментарий к транзакции.
|
||||
:type comment: str
|
||||
|
||||
:raises LengthError: Комментарий к транзакции comment слишком длинный *(макс. 32)*
|
||||
:raises IsNotCardError: Неверно указана карта получателя
|
||||
"""
|
||||
|
||||
receiver: str
|
||||
amount: int
|
||||
comment: str
|
||||
|
||||
@validator('comment')
|
||||
def comment_size(cls, value: str):
|
||||
def _comment_size(cls, value: str):
|
||||
if len(value) > 32:
|
||||
raise ValueError('comment length must be <=32.')
|
||||
raise err.LengthError(32)
|
||||
return value
|
||||
|
||||
@validator('receiver')
|
||||
def receiver_type(cls, value: str):
|
||||
def _receiver_type(cls, value: str):
|
||||
if len(value) != 5 or not value.isnumeric():
|
||||
raise ValueError(f'Receiver card (`{value}`) number not valid')
|
||||
raise err.IsNotCardError(value)
|
||||
return value
|
||||
|
||||
Reference in New Issue
Block a user