-
Notifications
You must be signed in to change notification settings - Fork 0
/
check_for_manifest.py
79 lines (65 loc) · 2.46 KB
/
check_for_manifest.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
71
72
73
74
75
76
77
78
79
import os
import base64
import asyncio
import httpx
def writeFile(path: str, content: str):
with open(path, "w", encoding="utf-8") as file:
file.write(content)
def readFile(path: str) -> str:
with open(path, "r", encoding="utf-8") as file:
return file.read()
async def get_content(url, headers):
async with httpx.AsyncClient() as client:
response = await client.get(url=url, headers=headers)
return response.json()
async def getManifestOnline() -> dict:
url = "https://www.bungie.net/Platform/Destiny2/Manifest/"
headers = {"X-API-KEY": "{}".format(os.environ.get("API_KEY"))}
data = await get_content(url, headers)
if data.get("ErrorCode") == 1 and data.get("Message") == "Ok":
return data["Response"]
else:
raise
async def startGenerateManifest(current: str) -> None:
buildMessage = f"New manifest build - {current}"
url = "https://api.github.com/repos/Destiny2Bot/py-d2-additional-info/dispatches"
headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "Basic "
+ base64.b64encode(os.environ.get("PAT", "").encode()).decode(),
"User-Agent": "d2-additional-info",
}
body = {
"event_type": "new-manifest-detected",
"client_payload": {
"message": buildMessage,
"branch": "master",
"config": {"env": {"MANIFEST_VERSION": current}},
},
}
async with httpx.AsyncClient() as client:
response = await client.post(url=url, headers=headers, json=body)
if response.status_code != 204:
print(response.text)
raise
async def main():
try:
skipCheck = True if os.environ.get("SKIP_CHECK", "") == "true" else False
latest = readFile("./latest.json")
manifestMetadata = await getManifestOnline()
current = manifestMetadata["version"]
newREADME = "# py-d2-manifest-bot\ngithub action for checking for new d2 manifest\n\n# Current Manifest: {current}"
if not skipCheck:
print(f"Latest: {latest}")
print(f"Current: {current}")
if latest == current:
return
print("New manifest detected")
writeFile("latest.json", current)
writeFile("README.md", newREADME.format(current=current))
await startGenerateManifest(current)
except:
print("error")
if __name__ == "__main__":
asyncio.run(main())