librefi/librefi/fxckers/_common.py

38 lines
1.4 KiB
Python

import requests
from http.cookiejar import CookieJar
from ..utils import get_user_agent
class BaseFxcker:
def __init__(self, logger, log_level):
self.cookie_jar = CookieJar()
self.user_agent = get_user_agent()
self.log = logger(key=self.FXCKER_KEY, log_level=log_level)
@property
def FXCKER_KEY(self):
return self.__class__.__name__[:-6]
def request(self, method, url, resource=None,
follow_redirects=True, **kwargs):
kwargs["cookies"] = self.cookie_jar
if not kwargs.get("headers"):
kwargs["headers"] = {}
if not kwargs["headers"].get("User-Agent"):
kwargs["headers"]["User-Agent"] = self.user_agent
if not kwargs.get("allow_redirects"):
kwargs["allow_redirects"] = False
self.log.info("Requesting " +
resource if resource is not None
else (str(method) + " " + str(url)))
req = requests.request(method, url, **kwargs)
if follow_redirects is True and req.headers.get("Location"):
kwargs["data"] = None
kwargs["headers"]["Referer"] = url
return self.request("GET", req.headers.get("Location"),
resource=resource,
follow_redirects=follow_redirects,
**kwargs)
return req