Allow setting multiple proxies + some cleanup
This commit is contained in:
parent
da2e7152ba
commit
1a45c3b919
|
@ -19,6 +19,8 @@
|
||||||
#
|
#
|
||||||
# https://github.com/pylast/pylast
|
# https://github.com/pylast/pylast
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
import collections
|
import collections
|
||||||
import hashlib
|
import hashlib
|
||||||
import html.entities
|
import html.entities
|
||||||
|
@ -194,7 +196,6 @@ class _Network:
|
||||||
self.urls = urls
|
self.urls = urls
|
||||||
|
|
||||||
self.cache_backend = None
|
self.cache_backend = None
|
||||||
self.proxy_enabled = False
|
|
||||||
self.proxy = None
|
self.proxy = None
|
||||||
self.last_call_time = 0
|
self.last_call_time = 0
|
||||||
self.limit_rate = False
|
self.limit_rate = False
|
||||||
|
@ -394,26 +395,20 @@ class _Network:
|
||||||
|
|
||||||
return seq
|
return seq
|
||||||
|
|
||||||
def enable_proxy(self, host, port):
|
def enable_proxy(self, proxy: str | dict) -> None:
|
||||||
"""Enable a default web proxy"""
|
"""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)}"
|
def disable_proxy(self) -> None:
|
||||||
self.proxy_enabled = True
|
|
||||||
|
|
||||||
def disable_proxy(self):
|
|
||||||
"""Disable using the web proxy"""
|
"""Disable using the web proxy"""
|
||||||
|
self.proxy = None
|
||||||
|
|
||||||
self.proxy_enabled = False
|
def is_proxy_enabled(self) -> bool:
|
||||||
|
"""Returns True if web proxy is enabled."""
|
||||||
def is_proxy_enabled(self):
|
return self.proxy is not None
|
||||||
"""Returns True if a web proxy is enabled."""
|
|
||||||
|
|
||||||
return self.proxy_enabled
|
|
||||||
|
|
||||||
def _get_proxy(self):
|
|
||||||
"""Returns proxy details."""
|
|
||||||
|
|
||||||
return self.proxy
|
|
||||||
|
|
||||||
def enable_rate_limit(self):
|
def enable_rate_limit(self):
|
||||||
"""Enables rate limiting for this network"""
|
"""Enables rate limiting for this network"""
|
||||||
|
@ -922,7 +917,7 @@ class _Request:
|
||||||
verify=SSL_CONTEXT,
|
verify=SSL_CONTEXT,
|
||||||
base_url=f"https://{host_name}",
|
base_url=f"https://{host_name}",
|
||||||
headers=HEADERS,
|
headers=HEADERS,
|
||||||
proxies=f"http://{self.network._get_proxy()}",
|
proxies=self.network.proxy,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
client = httpx.Client(
|
client = httpx.Client(
|
||||||
|
|
|
@ -296,13 +296,12 @@ class TestPyLastNetwork(TestPyLastWithLastFm):
|
||||||
|
|
||||||
def test_proxy(self):
|
def test_proxy(self):
|
||||||
# Arrange
|
# Arrange
|
||||||
host = "example.com"
|
proxy = "http://example.com:1234"
|
||||||
port = 1234
|
|
||||||
|
|
||||||
# Act / Assert
|
# Act / Assert
|
||||||
self.network.enable_proxy(host, port)
|
self.network.enable_proxy(proxy)
|
||||||
assert self.network.is_proxy_enabled()
|
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()
|
self.network.disable_proxy()
|
||||||
assert not self.network.is_proxy_enabled()
|
assert not self.network.is_proxy_enabled()
|
||||||
|
|
Loading…
Reference in a new issue