Allow setting multiple proxies + some cleanup
This commit is contained in:
parent
da2e7152ba
commit
1a45c3b919
|
@ -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(
|
||||
|
|
|
@ -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()
|
||||
|
|
Loading…
Reference in a new issue