From a01b3a247361c3af01e9201db492a08f140bcc2f Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Sat, 1 Aug 2020 19:58:59 +0300 Subject: [PATCH] Do not raise exception when package is not found (404), return None --- platformio/clients/http.py | 4 +++- platformio/clients/registry.py | 23 ++++++++++++++--------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/platformio/clients/http.py b/platformio/clients/http.py index e1257762..3070f749 100644 --- a/platformio/clients/http.py +++ b/platformio/clients/http.py @@ -69,4 +69,6 @@ class HTTPClient(object): message = response.json()["message"] except (KeyError, ValueError): message = response.text - raise HTTPClientError(message) + exc = HTTPClientError(message) + exc.response = response + raise exc diff --git a/platformio/clients/registry.py b/platformio/clients/registry.py index b7d724b9..f8130c60 100644 --- a/platformio/clients/registry.py +++ b/platformio/clients/registry.py @@ -14,7 +14,7 @@ from platformio import __registry_api__, fs from platformio.clients.account import AccountClient -from platformio.clients.http import HTTPClient +from platformio.clients.http import HTTPClient, HTTPClientError from platformio.package.meta import PackageType try: @@ -120,7 +120,7 @@ class RegistryClient(HTTPClient): for value in set( values if isinstance(values, (list, tuple)) else [values] ): - search_query.append("%s:%s" % (name[:-1], value)) + search_query.append('%s:"%s"' % (name[:-1], value)) if query: search_query.append(query) params = dict(query=quote(" ".join(search_query))) @@ -129,10 +129,15 @@ class RegistryClient(HTTPClient): return self.request_json_data("get", "/v3/packages", params=params) def get_package(self, type_, owner, name, version=None): - return self.request_json_data( - "get", - "/v3/packages/{owner}/{type}/{name}".format( - type=type_, owner=owner, name=quote(name) - ), - params=dict(version=version) if version else None, - ) + try: + return self.request_json_data( + "get", + "/v3/packages/{owner}/{type}/{name}".format( + type=type_, owner=owner.lower(), name=quote(name.lower()) + ), + params=dict(version=version) if version else None, + ) + except HTTPClientError as e: + if e.response.status_code == 404: + return None + raise e