From bf4fd837f4760e799633a26f50b724bc9d3d790c Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Mon, 9 Nov 2020 21:41:54 +0100 Subject: Fixed #63 Validate against /groups as well. There's not really a search API that I could find *(with little effort on my part to try and find it)*. So I went ahead and just check for HTTP 200 on the package URL. This won't give search functionality, but it will at least validate a group definition. --- archinstall/lib/packages.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'archinstall/lib/packages.py') diff --git a/archinstall/lib/packages.py b/archinstall/lib/packages.py index ddf11f7f..03bb2154 100644 --- a/archinstall/lib/packages.py +++ b/archinstall/lib/packages.py @@ -3,6 +3,23 @@ import ssl, json from .exceptions import * BASE_URL = 'https://www.archlinux.org/packages/search/json/?name={package}' +BASE_GROUP_URL = 'https://www.archlinux.org/groups/x86_64/{group}/' + +def find_group(name): + ssl_context = ssl.create_default_context() + ssl_context.check_hostname = False + ssl_context.verify_mode = ssl.CERT_NONE + try: + response = urllib.request.urlopen(BASE_GROUP_URL.format(group=name), context=ssl_context) + except urllib.error.HTTPError as err: + if err.code == 404: + return False + else: + raise err + + # Just to be sure some code didn't slip through the exception + if response.code == 200: + return True def find_package(name): """ @@ -34,7 +51,7 @@ def validate_package_list(packages :list): """ invalid_packages = [] for package in packages: - if not find_package(package)['results']: + if not find_package(package)['results'] and not find_group(package): invalid_packages.append(package) if invalid_packages: -- cgit v1.2.3-54-g00ecf