36 lines
1.3 KiB
Python
36 lines
1.3 KiB
Python
import requests
|
|
|
|
#from dependencies.request_api import RequestsApi
|
|
#call = RequestsApi("https://google.com")
|
|
#r = call.get("/")
|
|
|
|
class RequestsApi:
|
|
def __init__(self, base_url, **kwargs):
|
|
self.base_url = base_url
|
|
self.session = requests.Session()
|
|
for arg in kwargs:
|
|
if isinstance(kwargs[arg], dict):
|
|
kwargs[arg] = self.deep_merge(getattr(self.session, arg), kwargs[arg])
|
|
setattr(self.session, arg, kwargs[arg])
|
|
|
|
def request(self, method, url, **kwargs):
|
|
return self.session.request(method, self.base_url+url, allow_redirects = False, **kwargs)
|
|
|
|
def head(self, url, **kwargs):
|
|
return self.session.head(self.base_url+url, allow_redirects = False, **kwargs)
|
|
|
|
def get(self, url, **kwargs):
|
|
return self.session.get(self.base_url+url, allow_redirects = False, **kwargs)
|
|
|
|
def post(self, url, **kwargs):
|
|
return self.session.post(self.base_url+url, allow_redirects = False, **kwargs)
|
|
|
|
@staticmethod
|
|
def deep_merge(source, destination):<
|
|
for key, value in source.items():
|
|
if isinstance(value, dict):
|
|
node = destination.setdefault(key, {})
|
|
RequestsApi.deep_merge(value, node)
|
|
else:
|
|
destination[key] = value
|
|
return destination |