Skip to content

Commit

Permalink
improved exception & error handling #1
Browse files Browse the repository at this point in the history
  • Loading branch information
michivonah committed Oct 12, 2024
1 parent 5e07460 commit 0988256
Showing 1 changed file with 50 additions and 25 deletions.
75 changes: 50 additions & 25 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,41 +26,63 @@ def sendMessage(message, notificationType):
header = {
"Authorization":f"Bearer {accessToken}"
}
response = requests.post(url=endpoint, headers=header, data=message)
else: response = requests.post(url=endpoint, data=message)
try:
response = requests.post(url=endpoint, headers=header, data=message)
except Exception as error:
raise Exception(f"Got an error while sending the notification: {error}")
else:
try:
response = requests.post(url=endpoint, data=message)
except Exception as error:
raise Exception(f"Got an error while sending the notification: {error}")
return response
case "discord" | _:
endpoint = os.getenv('DISCORD_WEBHOOK')
data = {
"content": message,
}
response = requests.post(url=endpoint, json=data)
return response
try:
response = requests.post(url=endpoint, json=data)
return response
except Exception as error:
raise Exception(f"Got an error while sending the notification: {error}")

# Check for the current waiting times
def checkTimes(subscribedAttractions, themepark):
endpoint = "https://api.wartezeiten.app/v1/waitingtimes"
try:
endpoint = "https://api.wartezeiten.app/v1/waitingtimes"

header = {
"language":"de",
"park":themepark
}
header = {
"language":"de",
"park":themepark
}

req = requests.get(url=endpoint, headers=header)
result = req.json()
attractions = result
for attraction in attractions:
if attraction["code"] in subscribedAttractions:
if attraction["status"] == "opened":
refreshTime = 30
if not attraction["code"] in currentTimes: currentTimes[attraction["code"]] = attraction["waitingtime"];
if currentTimes[attraction["code"]] > attraction["waitingtime"]:
sendMessage(f"Waiting time of {attraction['name']} sank to {attraction['waitingtime']} Minutes!", notificationType)
elif currentTimes[attraction["code"]] < attraction["waitingtime"]:
sendMessage(f"Waiting time for {attraction['name']} increased to {attraction['waitingtime']} Minutes!", notificationType)
currentTimes[attraction["code"]] = attraction["waitingtime"]
req = requests.get(url=endpoint, headers=header)
except:
raise Exception(f"API Request to endpoint {endpoint} failed.")
try:
result = req.json()
except:
raise Exception("Format of API response is invalid. (JSON expected)")
try:
attractions = result
for attraction in attractions:
if isinstance(attraction, dict) and "code" in attraction:
if attraction["code"] in subscribedAttractions:
if attraction["status"] == "opened":
refreshTime = 30
if not attraction["code"] in currentTimes: currentTimes[attraction["code"]] = attraction["waitingtime"];
if currentTimes[attraction["code"]] > attraction["waitingtime"]:
sendMessage(f"Waiting time of {attraction['name']} sank to {attraction['waitingtime']} Minutes!", notificationType)
elif currentTimes[attraction["code"]] < attraction["waitingtime"]:
sendMessage(f"Waiting time for {attraction['name']} increased to {attraction['waitingtime']} Minutes!", notificationType)
currentTimes[attraction["code"]] = attraction["waitingtime"]
else:
refreshTime = 180
else:
refreshTime = 180
print(f"Info: Attraction was skipt because it has an invalid data structure. Affacted attraction: {attraction}")
except Exception as error:
raise Exception(f"Got an error while checking for differences since the last API call. Error: {error}")

# Main Loop
# Checks every 30 seconds for changes in the waiting times of the subscribed attractions
Expand All @@ -70,7 +92,10 @@ def checkTimes(subscribedAttractions, themepark):
print("By Michi von Ah")
print("Big thanks to the wartezeiten.app API!")
while True:
checkTimes(subscribedAttractions, themepark)
print(f"Checked for updates at {time.strftime('%H:%M:%S', time.localtime())}")
try:
checkTimes(subscribedAttractions, themepark)
print(f"Checked for updates at {time.strftime('%H:%M:%S', time.localtime())}")
except Exception as error:
raise Exception(error)
time.sleep(refreshTime)

0 comments on commit 0988256

Please sign in to comment.