Source code for proxy_randomizer.proxy
"""Proxy module to handle all proxies related stuff"""
# built in modules
from enum import Enum
# local modules
# third party modules
# type hint
import typing as t
[docs]class Anonymity(bytes, Enum):
"""Anonymity."""
def __new__(cls, value: int, label: str, description: str):
obj = bytes.__new__(cls, [value])
obj._value_ = value
obj.label = label
obj.description = description
return obj
UNKNOWN = (0, "Unknown", "Unknown anonymity level.")
ELITE = (1, "Elite", "Provide the very highest level of anonymity.")
ANONYMOUS = (
2,
"Anonymous",
"Provide a degree of anonymity acceptable for many purposes.",
)
TRANSPARENT = (
3,
"Transparent",
"Do not hide your IP address from a server you are connecting to, so it does not provide anonymity.",
)
[docs]class Proxy:
"""Proxy."""
def __init__(
self,
ip_address: str,
port: t.Union[int, str],
country: str,
anonymity: Anonymity,
) -> None:
"""Proxy contrunctor.
:param ip_address : proxy ip address
:type ip_address : str
:param port : proxy port
:type port : t.Union[int, str]
:param country : proxy country
:type country : str
:param anonymity : proxy anonymity
:type anonymity : Anonymity
"""
self.ip_address: str = ip_address
self.port: int = port
self.country: str = country
self.anonymity: Anonymity = anonymity
def __str__(self) -> str:
"""return a string representation of Proxy.
:return : proxy string representation
:rtype : str
"""
return f"{self.get_proxy()} {self.country} {self.anonymity.label}"
[docs] def get_proxy(self) -> str:
"""formated url:port string.
:return : url:port string
:rtype : str
"""
return f"{self.ip_address}:{self.port}"