for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Base HTTP requests."""
from collections import OrderedDict
import requests
class TimeoutException(Exception):
"""Ignore timeouts."""
pass
class HttpRequest:
__class__
"""Provides all generic features for making HTTP GET requests"""
def __init__(self, url, timeout=10):
self.url = url
self.params = OrderedDict()
self.timeout = timeout
self.headers = {}
def reset_session(self):
"""Reset everything to default."""
self.sess = requests.Session()
sess
__init__
It is generally a good practice to initialize all attributes to default values in the __init__ method:
class Foo: def __init__(self, x=None): self.x = x
self.sess.headers.update(self.headers)
def run(self):
"""Run query."""
try:
req = self.sess.get(self.url, params=self.params, timeout=self.timeout)
except requests.exceptions.Timeout as exc:
raise TimeoutException(exc)
return req
class HttpPostRequest(HttpRequest):
"""Provides all generic features for making HTTP POST requests"""
req = self.sess.post(self.url, data=self.params, timeout=self.timeout)