Browse Source

Source Code

main
Fsoky 4 years ago
parent
commit
f001628189
  1. 41
      donationalerts_api.py

41
donationalerts_api.py

@ -56,7 +56,7 @@ class DonationAlertsApi:
self.client_secret = client_secret
self.redirect_uri = redirect_uri
self.login_url = f"https://www.donationalerts.com/oauth/authorize?client_id={client_id}&redirect_uri={redirect_uri}&response_type=code&scope={self.scope}"
self.token_url = f"https://www.donationalerts.com/oauth/token?grant_type=authorization_code&client_id={client_id}&client_secret={client_secret}&redirect_uri={redirect_uri}&code="
self.token_url = f"https://www.donationalerts.com/oauth/token"
# API LINKS
self.user_api = "https://www.donationalerts.com/api/v1/user/oauth"
@ -69,7 +69,7 @@ class DonationAlertsApi:
def get_code(self):
return request.args.get("code")
def get_access_token(self, code):
def get_access_token(self, code, full=False):
payload = {
"client_id": self.client_id,
"client_secret": self.client_secret,
@ -80,7 +80,9 @@ class DonationAlertsApi:
}
access_token = requests.post(url=self.token_url, data=payload).json()
return access_token.get("access_token")
self.refresh_token = access_token.get("refresh_token")
return access_token if full else access_token.get("access_token")
def get_donations(self, access_token):
headers = {
@ -98,7 +100,7 @@ class DonationAlertsApi:
}
user_object = requests.get(url=self.user_api, headers=headers).json()
return user_object
return user_object["data"]
def send_custom_alert(self, access_token, external_id, headline, message, image_url=None, sound_url=None, is_shown=0):
headers = {
@ -117,6 +119,20 @@ class DonationAlertsApi:
return custom_alert_object
def get_refresh_token(self):
headers = {"Content-Type": "application/x-www-form-urlencoded"}
data = {
"grant_type": "refresh_token",
"client_id": self.client_id,
"client_secret": self.client_secret,
"refresh_token": self.refresh_token,
"redirect_uri": self.redirect_uri,
"scope": self.scope
}
response = requests.post(url=self.token_url, data=data, headers=headers).json()
return response
class Centrifugo:
@ -142,9 +158,12 @@ class Centrifugo:
return self.ws_response
def subscribe(self, channels):
chnls = []
for channel in channels:
chnls.append(f"{channel}{self.user_id}")
chnls = [f"{channels}{self.user_id}"]
if isinstance(channels, list):
chnls = []
for channel in channels:
chnls.append(f"{channel}{self.user_id}")
headers = {
"Authorization": f"Bearer {self.access_token}",
@ -154,7 +173,7 @@ class Centrifugo:
"channels": chnls,
"client": self.ws_response["result"]["client"]
}
response = requests.post(url="https://www.donationalerts.com/api/v1/centrifuge/subscribe", data=json.dumps(data), headers=headers).json()
for ch in response["channels"]:
self.ws.send(json.dumps(
@ -167,5 +186,9 @@ class Centrifugo:
"id": self.user_id
}
))
answer = {"response": self.ws.recv(), "sec_response": self.ws.recv()}
return answer
return json.loads(self.ws.recv())
def listen(self):
return json.loads(self.ws.recv())["result"]["data"]["data"]
Loading…
Cancel
Save