Browse Source

+ few comments

main
Fsoky 4 years ago
parent
commit
c927e80558
  1. 26
      donationalerts_api.py

26
donationalerts_api.py

@ -6,6 +6,7 @@ import socketio
class Scopes:
"""Удобный класс, для простого указания прав в приложении"""
USER_SHOW = "oauth-user-show"
@ -22,6 +23,7 @@ class Scopes:
class Channels:
"""Права для подписки на каналы Centrifugo"""
NEW_DONATION_ALERTS = "$alerts:donation_"
@ -33,9 +35,7 @@ class Channels:
class DonationAlertsApi:
"""
This class describes work with Donation Alerts API
"""
"""Основной класс для работы с DA API"""
def __init__(self, client_id, client_secret, redirect_uri, scopes):
symbols = [",", ", ", " ", "%20"]
@ -68,9 +68,15 @@ class DonationAlertsApi:
return self.login_url
def get_code(self):
return request.args.get("code")
return request.args.get("code") # Получаем аргмент "code" из адресной строки
def get_access_token(self, code, full=False):
""" Параметр full=False
Если True, то выводит весь json объект, а не только access_token
"""
payload = {
"client_id": self.client_id,
"client_secret": self.client_secret,
@ -136,6 +142,7 @@ class DonationAlertsApi:
class Centrifugo:
"""Получение событий в реальном времени (Oauth2)"""
def __init__(self, socket_connection_token, access_token, user_id):
self.socket_connection_token = socket_connection_token
@ -145,7 +152,7 @@ class Centrifugo:
self.uri = "wss://centrifugo.donationalerts.com/connection/websocket"
def connect(self):
self.ws = create_connection(self.uri)
self.ws = create_connection(self.uri) # Подключаемся к серверу
self.ws.send(json.dumps(
{
"params": {
@ -189,18 +196,19 @@ class Centrifugo:
))
answer = {"response": self.ws.recv(), "sec_response": self.ws.recv()}
return answer
return answer # Возвращаем первые два ответа от сервера
def listen(self):
return json.loads(self.ws.recv())["result"]["data"]["data"]
return json.loads(self.ws.recv())["result"]["data"]["data"] # Возвращаем 3-й ответ от сервера
sio = socketio.Client()
class Alert:
"""Получение донатов в реальном времени без Oauth2"""
def __init__(self, token):
self.token = token
self.token = token # TOKEN можно скопировать здесь - https://www.donationalerts.com/dashboard/general
def event(self):
def wrapper(function):
@ -210,7 +218,7 @@ class Alert:
@sio.on("donation")
def on_message(data):
function(json.loads(data))
function(json.loads(data)) # Отправляем полученные данные в функцию
sio.connect("wss://socket.donationalerts.ru:443", transports="websocket")
return wrapper
Loading…
Cancel
Save