forked from public/mirror-checker
parent
94e4aba1c5
commit
cb8b9d0b2d
@ -0,0 +1,28 @@ |
||||
#!/usr/bin/env python3 |
||||
|
||||
""" |
||||
This mirror status checker determines whether CSC mirror is up-to-date with upstream |
||||
""" |
||||
|
||||
from datetime import datetime, timedelta |
||||
import requests |
||||
|
||||
SUCCESS = "Success: {} up-to-date" |
||||
FAILURE = "Failure: {} out-of-sync" |
||||
ERROR = "Error: {}\n{}" |
||||
|
||||
if __name__ == "__main__": |
||||
# Arch |
||||
try: |
||||
arch_json = requests.get("https://archlinux.org/mirrors/status/json/").json() |
||||
last_check_str = arch_json["last_check"] |
||||
last_sync_str = [url for url in arch_json["urls"] if url["url"] == \ |
||||
"http://mirror.csclub.uwaterloo.ca/archlinux/"][0]["last_sync"] |
||||
last_check_dt = datetime.strptime(last_check_str, "%Y-%m-%dT%H:%M:%S.%fZ") |
||||
last_sync_dt = datetime.strptime(last_sync_str, "%Y-%m-%dT%H:%M:%SZ") |
||||
# According to https://archlinux.org/mirrors/status/: |
||||
# Due to the timing of mirror checks, any value under one hour should be viewed as ideal |
||||
OUTPUT = SUCCESS if last_check_dt < last_sync_dt + timedelta(hours = 1) else FAILURE |
||||
print(OUTPUT.format("Arch")) |
||||
except requests.exceptions.RequestException as err: |
||||
print(ERROR.format("Arch", err)) |
Loading…
Reference in new issue