-
Notifications
You must be signed in to change notification settings - Fork 0
/
internet.py
70 lines (55 loc) · 2.34 KB
/
internet.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import requests
import json
# Klasse, die sich um Ablaufen und Erneuern der Tokens kümmert
class Internet:
def __init__(self):
# access_token und refresh_token aus data.txt auslesen und in variablen schreiben
with open("data.txt", "r") as f:
content = json.loads(f.read())
self.access_token = content["access_token"]
self.refresh_token = content["refresh_token"]
print("internet object initialized")
# Funktion um zu checken, ob access_token noch gültig ist, oder ob er refreshed werden muss
# True = gültig, False = ungültig
def access_token_check(self):
url = "https://api.spotify.com/v1/me"
headers = {
"Authorization": "Bearer " + self.access_token,
}
r = requests.get(url=url, headers=headers)
if r.status_code == 401:
return False
else:
return True
# Funktion die checkt, ob in einem dictionary ein "refresh_token" Wert gegeben ist
# konkreter usecase hier: ob in token_refresh() ein neuer refresh_token gegeben wird
def new_refresh_token_given(self, dict):
if "refresh_token" in dict:
return True
else: return False
# Funktion um access_token mit refresh_token zu erneuern
def renew_access_token(self):
url = "https://accounts.spotify.com/api/token"
data = {
"grant_type": "refresh_token",
"refresh_token": self.refresh_token,
}
headers = {
"Authorization": ""
}
r = requests.post(url=url, data=data, headers=headers)
content_dir = r.json();
self.access_token = content_dir["access_token"]
# falls es einen neuen refresh_token gibt, wird der in Variable und danach in data.txt gespeichert
if self.new_refresh_token_given(content_dir):
refresh_token = content_dir["refresh_token"]
# Funktion, die alle Internet Methods nun vereint, um wenn aufgerufen immer einen gültigen access_token rauszugeben
def give_valid_access_token(self):
if self.access_token_check():
return self.access_token
else:
self.renew_access_token()
if self.access_token_check():
return self.access_token
else:
print("access_token_renewal didn't work")