Total Complexity | 6 |
Total Lines | 49 |
Duplicated Lines | 0 % |
Changes | 0 |
1 | #!/usr/bin/env python3 |
||
2 | # -*- coding: utf-8 -*- |
||
3 | |||
4 | """Base HTTP requests.""" |
||
5 | |||
6 | from collections import OrderedDict |
||
7 | |||
8 | import requests |
||
9 | |||
10 | |||
11 | class TimeoutException(Exception): |
||
12 | """Ignore timeouts.""" |
||
13 | pass |
||
14 | |||
15 | |||
16 | class HttpRequest: |
||
|
|||
17 | """Provides all generic features for making HTTP GET requests""" |
||
18 | |||
19 | def __init__(self, url, timeout=10): |
||
20 | self.url = url |
||
21 | self.params = OrderedDict() |
||
22 | self.timeout = timeout |
||
23 | self.headers = {} |
||
24 | |||
25 | def reset_session(self): |
||
26 | """Reset everything to default.""" |
||
27 | self.sess = requests.Session() |
||
28 | self.sess.headers.update(self.headers) |
||
29 | |||
30 | def run(self): |
||
31 | """Run query.""" |
||
32 | try: |
||
33 | req = self.sess.get(self.url, params=self.params, timeout=self.timeout) |
||
34 | except requests.exceptions.Timeout as exc: |
||
35 | raise TimeoutException(exc) |
||
36 | return req |
||
37 | |||
38 | |||
39 | class HttpPostRequest(HttpRequest): |
||
40 | """Provides all generic features for making HTTP POST requests""" |
||
41 | |||
42 | def run(self): |
||
43 | """Run query.""" |
||
44 | try: |
||
45 | req = self.sess.post(self.url, data=self.params, timeout=self.timeout) |
||
46 | except requests.exceptions.Timeout as exc: |
||
47 | raise TimeoutException(exc) |
||
48 | return req |
||
49 |