Skip to content

Commit

Permalink
Check if CloudFlare installer link can be accessed, fallback to Artif…
Browse files Browse the repository at this point in the history
…actory otherwise (#2585)

Co-authored-by: Vasista Vovveti <vasistavovveti@gmail.com>
  • Loading branch information
Gold856 and TheTripleV committed Feb 25, 2024
1 parent ed3fb4b commit ab50202
Showing 1 changed file with 18 additions and 8 deletions.
26 changes: 18 additions & 8 deletions source/_extensions/wpilib_release.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,19 +27,22 @@ def run(self) -> List[nodes.Node]:
release: Dict = release_json.json()

cf_folder = f"https://packages.wpilib.workers.dev/installer/{version}"
artifactory_folder = (
f"https://frcmaven.wpi.edu/api/download/installer/{version}"
)

def get_url_size(osname):
soup = BeautifulSoup(
requests.get(f"{cf_folder}/{osname}/").text, "html.parser"
)
file = str(soup.find_all("tr")[-1].contents[0].string)
size = str(soup.find_all("tr")[-1].contents[2].string)
url = f"{cf_folder}/{osname}/{file}"
return url, size
url_part = f"/{osname}/{file}"
return url_part, size

win_download_url, win_size = get_url_size("Win64")
mac_intel_download_url, mac_intel_size = get_url_size("macOS")
mac_arm_download_url, mac_arm_size = get_url_size("macOSArm")
win_download_url_part, win_size = get_url_size("Win64")
mac_intel_download_url_part, mac_intel_size = get_url_size("macOS")
mac_arm_download_url_part, mac_arm_size = get_url_size("macOSArm")

# There's something weird going where the hashes are all printed on one line.
# This works aroung that.
Expand Down Expand Up @@ -80,15 +83,22 @@ def get_url_size(osname):
addEventListener('DOMContentLoaded', async (event) => {{
let dlbutton = document.getElementsByClassName("wpilibrelease-dl-button")[0];
let ua = await navigator.userAgentData.getHighEntropyValues(['architecture', 'bitness', 'mobile', 'platform', 'platformVersion']);
let baseUrl;
try {{
await fetch("https://packages.wpilib.workers.dev/", {{ mode: "no-cors" }});
baseUrl = "{cf_folder}";
}} catch (e) {{
baseUrl = "{artifactory_folder}";
}}
if (ua['platform'] == 'Windows') {{
dlbutton.href = '{win_download_url}';
dlbutton.href = `${{baseUrl}}{win_download_url_part}`;
dlbutton.text = 'Download for Windows - {win_size}';
}} else if (ua['platform'] == 'macOS') {{
if (ua['architecture'] == 'x86') {{
dlbutton.href = '{mac_intel_download_url}';
dlbutton.href = `${{baseUrl}}{mac_intel_download_url_part}`;
dlbutton.text = 'Download for macOS Intel - {mac_intel_size}';
}} else if (ua['architecture'].includes('arm')) {{
dlbutton.href = '{mac_arm_download_url}';
dlbutton.href = `${{baseUrl}}{mac_arm_download_url_part}`;
dlbutton.text = 'Download for macOS Arm | Apple Silicon - {mac_arm_size}';
}}
}}
Expand Down

0 comments on commit ab50202

Please sign in to comment.