From 1a45c3b91914fc4477156d9dfc4a32e68f573179 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade Date: Mon, 24 Jan 2022 17:23:08 +0200 Subject: [PATCH] Allow setting multiple proxies + some cleanup --- src/pylast/__init__.py | 33 ++++++++++++++------------------- tests/test_network.py | 7 +++---- 2 files changed, 17 insertions(+), 23 deletions(-) diff --git a/src/pylast/__init__.py b/src/pylast/__init__.py index c1e3fa0..1360889 100644 --- a/src/pylast/__init__.py +++ b/src/pylast/__init__.py @@ -19,6 +19,8 @@ # # https://github.com/pylast/pylast +from __future__ import annotations + import collections import hashlib import html.entities @@ -194,7 +196,6 @@ class _Network: self.urls = urls self.cache_backend = None - self.proxy_enabled = False self.proxy = None self.last_call_time = 0 self.limit_rate = False @@ -394,26 +395,20 @@ class _Network: return seq - def enable_proxy(self, host, port): - """Enable a default web proxy""" + def enable_proxy(self, proxy: str | dict) -> None: + """Enable default web proxy. + Multiple proxies can be passed as a `dict`, see + https://www.python-httpx.org/advanced/#http-proxying + """ + self.proxy = proxy - self.proxy = f"{host}:{_number(port)}" - self.proxy_enabled = True - - def disable_proxy(self): + def disable_proxy(self) -> None: """Disable using the web proxy""" + self.proxy = None - self.proxy_enabled = False - - def is_proxy_enabled(self): - """Returns True if a web proxy is enabled.""" - - return self.proxy_enabled - - def _get_proxy(self): - """Returns proxy details.""" - - return self.proxy + def is_proxy_enabled(self) -> bool: + """Returns True if web proxy is enabled.""" + return self.proxy is not None def enable_rate_limit(self): """Enables rate limiting for this network""" @@ -922,7 +917,7 @@ class _Request: verify=SSL_CONTEXT, base_url=f"https://{host_name}", headers=HEADERS, - proxies=f"http://{self.network._get_proxy()}", + proxies=self.network.proxy, ) else: client = httpx.Client( diff --git a/tests/test_network.py b/tests/test_network.py index ad141f2..8937c53 100755 --- a/tests/test_network.py +++ b/tests/test_network.py @@ -296,13 +296,12 @@ class TestPyLastNetwork(TestPyLastWithLastFm): def test_proxy(self): # Arrange - host = "example.com" - port = 1234 + proxy = "http://example.com:1234" # Act / Assert - self.network.enable_proxy(host, port) + self.network.enable_proxy(proxy) assert self.network.is_proxy_enabled() - assert self.network._get_proxy() == "example.com:1234" + assert self.network.proxy == "http://example.com:1234" self.network.disable_proxy() assert not self.network.is_proxy_enabled()