jetbrains: verify download urls
This commit is contained in:
@@ -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"]
|
||||
|
||||
Reference in New Issue
Block a user