41 lines
1.4 KiB
Python
41 lines
1.4 KiB
Python
from pypasser.structs import Proxy
|
|
from pypasser.exceptions import ConnectionError
|
|
|
|
import requests
|
|
from typing import Dict, Union
|
|
|
|
class Session():
|
|
def __init__(self,
|
|
base_url: str,
|
|
base_headers: dict,
|
|
timeout: Union[int, float],
|
|
proxy: Union[Proxy, Dict] = None
|
|
) -> None:
|
|
|
|
self.base_url = base_url
|
|
self.session = requests.Session()
|
|
self.session.headers = base_headers
|
|
self.timeout = timeout
|
|
|
|
if proxy:
|
|
self.session.proxies = proxy.dict() if type(proxy) == Proxy else proxy
|
|
|
|
def send_request(self, endpoint: str,
|
|
data: Union[str, Dict] = None,
|
|
params: str = None) -> requests.Response:
|
|
|
|
try:
|
|
if data:
|
|
response = self.session.post(self.base_url.format(endpoint),
|
|
data=data, params=params, timeout=self.timeout)
|
|
else:
|
|
response = self.session.get(self.base_url.format(endpoint),
|
|
params=params, timeout=self.timeout)
|
|
|
|
except requests.exceptions.RequestException:
|
|
raise ConnectionError()
|
|
|
|
except Exception as e:
|
|
print(e)
|
|
|
|
return response |