Merge pull request #330189 from herberteuler/fix/jetbrains-download-url-1

jetbrains: verify download urls
This commit is contained in:
Leona Maroni
2024-08-23 14:23:51 +02:00
committed by GitHub
@@ -6,6 +6,8 @@ import logging
import requests
import subprocess
import sys
from urllib.error import HTTPError
import urllib.request
import xmltodict
from packaging import version
@@ -57,6 +59,19 @@ def download_sha256(url):
channels = download_channels()
def get_url(template, version_or_build_number, version_number):
release = [str(n) for n in version.parse(version_number).release]
for k in range(len(release), 0, -1):
s = ".".join(release[0:k])
url = template.format(version=version_or_build_number, versionMajorMinor=s)
try:
if urllib.request.urlopen(url).getcode() == 200:
return url
except HTTPError:
pass
return None
def update_product(name, product):
update_channel = product["update-channel"]
logging.info("Updating %s", name)
@@ -78,7 +93,9 @@ def update_product(name, product):
else:
version_or_build_number = new_build_number
version_number = new_version.split(' ')[0]
download_url = product["url-template"].format(version=version_or_build_number, versionMajorMinor=version_number)
download_url = get_url(product["url-template"], version_or_build_number, version_number)
if not download_url:
raise Exception(f"No valid url for {name} version {version_or_build_number}")
product["url"] = download_url
if "sha256" not in product or product.get("build_number") != new_build_number:
fromVersions[name] = product["version"]