From 5ac8136c8e9570aa33f6a53e22177117a9731811 Mon Sep 17 00:00:00 2001 From: ellnix Date: Wed, 9 Apr 2025 22:32:57 +0200 Subject: [PATCH] Give helpful error message when missing protocol Fixes #1028 --- meilisearch/_httprequests.py | 10 ++++++++++ tests/errors/test_communication_error_meilisearch.py | 9 +++++++++ 2 files changed, 19 insertions(+) diff --git a/meilisearch/_httprequests.py b/meilisearch/_httprequests.py index 2d11184b..4606b898 100644 --- a/meilisearch/_httprequests.py +++ b/meilisearch/_httprequests.py @@ -80,6 +80,16 @@ def send_request( raise MeilisearchTimeoutError(str(err)) from err except requests.exceptions.ConnectionError as err: raise MeilisearchCommunicationError(str(err)) from err + except requests.exceptions.InvalidSchema as err: + if "://" not in self.config.url: + raise MeilisearchCommunicationError( + f""" + Invalid URL {self.config.url}, no scheme/protocol supplied. + Did you mean https://{self.config.url}? + """ + ) from err + + raise MeilisearchCommunicationError(str(err)) from err def get(self, path: str) -> Any: return self.send_request(requests.get, path) diff --git a/tests/errors/test_communication_error_meilisearch.py b/tests/errors/test_communication_error_meilisearch.py index c2fcee7f..be67a673 100644 --- a/tests/errors/test_communication_error_meilisearch.py +++ b/tests/errors/test_communication_error_meilisearch.py @@ -17,3 +17,12 @@ def test_meilisearch_communication_error_host(mock_post): client = meilisearch.Client("http://wrongurl:1234", MASTER_KEY) with pytest.raises(MeilisearchCommunicationError): client.create_index("some_index") + + +@patch("requests.post") +def test_meilisearch_communication_error_no_protocol(mock_post): + mock_post.configure_mock(__name__="post") + mock_post.side_effect = requests.exceptions.InvalidSchema() + client = meilisearch.Client("localhost:7700", MASTER_KEY) + with pytest.raises(MeilisearchCommunicationError, match="no scheme/protocol supplied."): + client.create_index("some_index")