mirror of
https://github.com/yawaflua/Py-SPW.git
synced 2025-12-10 04:19:31 +02:00
Release 1.0
small fixes
This commit is contained in:
6
.gitignore
vendored
6
.gitignore
vendored
@@ -149,3 +149,9 @@ cython_debug/
|
|||||||
|
|
||||||
# Test file
|
# Test file
|
||||||
test.py
|
test.py
|
||||||
|
|
||||||
|
# upload bat file
|
||||||
|
upload.bat
|
||||||
|
|
||||||
|
# PyPi description
|
||||||
|
pypi.md
|
||||||
|
|||||||
13
README.md
Normal file
13
README.md
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# Py SPW
|
||||||
|
Library fo work with SPworlds API.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
Library written on 3.10.5
|
||||||
|
|
||||||
|
To install, run this command:
|
||||||
|
`pip install Py-Spw`
|
||||||
|
|
||||||
|
## Links
|
||||||
|
- [PyPi](https://pypi.org/project/Py-SPW)
|
||||||
|
- [Documentation](https://github.com/teleport2/Py-SPW/wiki)
|
||||||
|
- [Author](https://github.com/teleport2)
|
||||||
24
README.rst
24
README.rst
@@ -1,24 +0,0 @@
|
|||||||
|
|
||||||
.. image:: https://img.shields.io/pypi/v/pyspw.svg
|
|
||||||
:target: https://pypi.org/project/pyspw/
|
|
||||||
:alt: PyPI version info
|
|
||||||
|
|
||||||
|
|
||||||
Py SPW
|
|
||||||
=======
|
|
||||||
|
|
||||||
Библиотека для работы с SPworlds API.
|
|
||||||
|
|
||||||
`Документация с примерами <https://github.com/teleport2/Py-SPW/wiki>`_
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Установка
|
|
||||||
----
|
|
||||||
Библиотека написана на python 3.10.5.
|
|
||||||
|
|
||||||
.. code:: sh
|
|
||||||
|
|
||||||
pip install pyspapi
|
|
||||||
|
|
||||||
|
|
||||||
30
pyspw/api.py
30
pyspw/api.py
@@ -60,7 +60,7 @@ class sp_api_base:
|
|||||||
|
|
||||||
def get_user(self, discord_id: str) -> str | None:
|
def get_user(self, discord_id: str) -> str | None:
|
||||||
"""
|
"""
|
||||||
Получение статуса проходки.
|
Получение ника пользователя.
|
||||||
:param discord_id: ID пользователя дискорда.
|
:param discord_id: ID пользователя дискорда.
|
||||||
:return: Str если пользователь найден, None если пользователь не найден. В str содержиться никнейм пользователя
|
:return: Str если пользователь найден, None если пользователь не найден. В str содержиться никнейм пользователя
|
||||||
"""
|
"""
|
||||||
@@ -76,10 +76,10 @@ class sp_api_base:
|
|||||||
|
|
||||||
def get_user_skin(self, discord_id: str, body_part: str, image_size: int = 64) -> bytes | None:
|
def get_user_skin(self, discord_id: str, body_part: str, image_size: int = 64) -> bytes | None:
|
||||||
"""
|
"""
|
||||||
Получение изображения головы майнкрафт скина.
|
Получение изображения части скина.
|
||||||
:param discord_id: ID пользователя дискорда.
|
:param discord_id: ID пользователя дискорда.
|
||||||
:param body_part: Часть тела для получения. Допустимые значения - https://visage.surgeplay.com/index.html
|
:param body_part: Часть тела для получения. Допустимые значения - https://visage.surgeplay.com/index.html
|
||||||
:param image_size: Размер получаемого изображения (максимум 512).
|
:param image_size: Размер получаемого изображения.
|
||||||
:return: Bytes если пользователь найден, None если пользователь не найден. В bytes содержиться изображение профиля
|
:return: Bytes если пользователь найден, None если пользователь не найден. В bytes содержиться изображение профиля
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -117,11 +117,11 @@ class sp_api_base:
|
|||||||
def check_webhook(self, webhook_data: str, X_Body_Hash: str) -> bool:
|
def check_webhook(self, webhook_data: str, X_Body_Hash: str) -> bool:
|
||||||
"""
|
"""
|
||||||
Валидирует webhook
|
Валидирует webhook
|
||||||
:param webhook_data: data из webhook.
|
:param webhook_data: Тело webhook'а.
|
||||||
:param X_Body_Hash: Хэдер X-Body-Hash из webhook.
|
:param X_Body_Hash: Хэдер X-Body-Hash из webhook.
|
||||||
:return: Bool True если вебхук пришел от верифицированного сервера, иначе False
|
:return: Bool True если вебхук пришел от верифицированного сервера, иначе False
|
||||||
"""
|
"""
|
||||||
hmac_data = hmac.new(self.card_token.encode('utf-8'), webhook_data, sha256).digest()
|
hmac_data = hmac.new(self.card_token.encode('utf-8'), webhook_data.encode('utf-8'), sha256).digest()
|
||||||
base64_data = b64encode(hmac_data)
|
base64_data = b64encode(hmac_data)
|
||||||
return hmac.compare_digest(base64_data, X_Body_Hash.encode('utf-8'))
|
return hmac.compare_digest(base64_data, X_Body_Hash.encode('utf-8'))
|
||||||
|
|
||||||
@@ -142,7 +142,7 @@ class sp_api_base:
|
|||||||
}
|
}
|
||||||
return self.__post('/payment', body).json()['url']
|
return self.__post('/payment', body).json()['url']
|
||||||
|
|
||||||
def create_payments(self, payments: tuple, request_delay: float = 0.1) -> list[str]:
|
def create_payments(self, payments: tuple, request_delay: float = 0.1) -> list:
|
||||||
"""
|
"""
|
||||||
Создание ссылок на оплату
|
Создание ссылок на оплату
|
||||||
:param request_delay: Значение задержки между запросами, указывается в секундах
|
:param request_delay: Значение задержки между запросами, указывается в секундах
|
||||||
@@ -173,7 +173,14 @@ class sp_api_base:
|
|||||||
|
|
||||||
return answer
|
return answer
|
||||||
|
|
||||||
def send_transaction(self, receiver: str, amount: int, comment: str) -> None:
|
def send_transaction(self, receiver: str, amount: int, comment: str = 'Нет комментария') -> None:
|
||||||
|
"""
|
||||||
|
Отправка транзакции
|
||||||
|
:param receiver: Номер карты на которую будет совершена транзакция.
|
||||||
|
:param amount: Сумма транзакции.
|
||||||
|
:param comment: Комментарий к транзакции.
|
||||||
|
:return: None.
|
||||||
|
"""
|
||||||
body = {
|
body = {
|
||||||
'receiver': receiver,
|
'receiver': receiver,
|
||||||
'amount': amount,
|
'amount': amount,
|
||||||
@@ -182,6 +189,15 @@ class sp_api_base:
|
|||||||
self.__post('/transactions', body)
|
self.__post('/transactions', body)
|
||||||
|
|
||||||
def send_transactions(self, transactions: tuple, request_delay: float = 0.1) -> None:
|
def send_transactions(self, transactions: tuple, request_delay: float = 0.1) -> None:
|
||||||
|
"""
|
||||||
|
Отправка транзакций
|
||||||
|
:param request_delay: Значение задержки между запросами, указывается в секундах
|
||||||
|
:param transactions: Кортеж содержащий словари со следующими параметрами:
|
||||||
|
:param receiver: Номер карты на которую будет совершена транзакция.
|
||||||
|
:param amount: Сумма транзакции.
|
||||||
|
:param comment: Комментарий к транзакции.
|
||||||
|
:return: List с ссылками на страницы оплаты, в том порядке, в котором они были в кортеже payments
|
||||||
|
"""
|
||||||
for transaction in transactions:
|
for transaction in transactions:
|
||||||
try:
|
try:
|
||||||
self.send_transaction(
|
self.send_transaction(
|
||||||
|
|||||||
16
setup.py
16
setup.py
@@ -1,12 +1,22 @@
|
|||||||
|
from os import path
|
||||||
from setuptools import setup
|
from setuptools import setup
|
||||||
|
|
||||||
|
this_directory = path.abspath(path.dirname(__file__))
|
||||||
|
|
||||||
|
with open(path.join(this_directory, 'README.md'), encoding='utf-8') as f:
|
||||||
|
description_md = f.read()
|
||||||
|
|
||||||
|
requires = ['requests==2.28.1']
|
||||||
|
|
||||||
setup(
|
setup(
|
||||||
name='pyspw',
|
name='Py-SPW',
|
||||||
version='1.0',
|
version='1.0.3',
|
||||||
packages=['pyspw'],
|
packages=['pyspw'],
|
||||||
url='https://github.com/teleport2/Py-SPW',
|
url='https://github.com/teleport2/Py-SPW',
|
||||||
license='MIT License',
|
license='MIT License',
|
||||||
author='Stepan Khozhempo',
|
author='Stepan Khozhempo',
|
||||||
author_email='stepan@m.khoz.ru',
|
author_email='stepan@m.khoz.ru',
|
||||||
description='Library for spworlds API'
|
description='Python library for spworlds API',
|
||||||
|
long_description=description_md,
|
||||||
|
long_description_content_type='text/markdown'
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user