Files
Py-SPW/pyspw/Parameters.py
Teleport c1a172d4be Add more pre-checkers, docstrings
- add SpwCardNotFound error to `send_transaction()`
- Add balance checker to `send_transactions()`
- Made working docstrings
- Correction errors in Parameters
2023-05-09 02:28:12 +03:00

84 lines
2.6 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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):
if value > 1728:
raise err.BigAmountError()
return value
@validator('data')
def _data_size(cls, value):
if len(value) > 100:
raise err.LengthError(100)
return value
@validator('redirectUrl', 'webhookUrl')
def _verify_url(cls, value: str):
if validators.url(value):
return value
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):
if len(value) > 32:
raise err.LengthError(32)
return value
@validator('receiver')
def _receiver_type(cls, value: str):
if len(value) != 5 or not value.isnumeric():
raise err.IsNotCardError(value)
return value