-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhttp_request_maker.py
140 lines (121 loc) · 5.38 KB
/
http_request_maker.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
from enum import Enum
import utils
import utils_auth as ua
import config
HEADERS = {
'accept': '*/*',
'Content-Type': 'application/json'
}
class HttpMethods(Enum):
GET = 'GET'
POST = 'POST'
PUT = 'PUT'
DELETE = 'DELETE'
class HTTPRequestMaker:
def __init__(self, api_url, token=None, headrs=None):
self._api_url = api_url
self._auth_token = token
self.headers = HEADERS if (headrs is None) else headrs
self.failed_requests_list = []
self.warning_requests_list = []
def make_get_requests(self, request_list):
self._make_requests(request_list, config.GET_SC, HttpMethods.GET)
def make_get_requests_with_parameters(self, requests_with_parameters_list):
self._make_requests(
requests_with_parameters_list,
config.GET_SC_PARAMS,
HttpMethods.GET)
def make_post_requests(self, request_list):
self._make_requests(
request_list, config.POST_SC, HttpMethods.POST)
def make_post_requests_with_parameters(self, requests_with_parameters_list):
self._make_requests(
requests_with_parameters_list,
config.POST_SC_PARAMS,
HttpMethods.POST)
def make_put_requests_with_parameters(self, requests_with_parameters_list):
self._make_requests(
requests_with_parameters_list,
config.PUT_SC_PARAMS,
HttpMethods.PUT)
def make_delete_requests_with_parameters(self, requests_with_parameters_list):
self._make_requests(
requests_with_parameters_list,
config.DELETE_SC_PARAMS,
HttpMethods.DELETE)
def _make_requests(self, request_list, correct_statuses, http_method):
for end_point in request_list:
if http_method == HttpMethods.GET:
print('Requesting GET ' + end_point, end="")
response = self._send_get_request(end_point)
status_code = response.status_code
elif http_method == HttpMethods.POST:
print('Requesting POST ' + end_point, end="")
response = self._send_post_request(end_point)
status_code = response.status_code
elif http_method == HttpMethods.PUT:
print('Requesting PUT ' + end_point, end="")
response = self._send_put_request(end_point)
status_code = response.status_code
elif http_method == HttpMethods.DELETE:
print('Requesting DELETE ' + end_point, end="")
response = self._send_delete_request(end_point)
status_code = response.status_code
else:
return
elapsed_time = response.elapsed.total_seconds()
print(' Duration: ' + str(elapsed_time))
request_succeeded = (status_code in correct_statuses)
if not request_succeeded:
self.failed_requests_list.append(
http_method.value + ' ' + end_point + ', sc: ' + str(status_code))
print('FAIL: ' + end_point +
' request failed. Status code: ' + str(status_code))
print('')
else:
if http_method == HttpMethods.GET:
self._add_to_warning_list_if_exceeded_warning_timeout(
elapsed_time, end_point)
else:
self._add_to_warning_list_if_exceeded_warning_timeout_post(
elapsed_time, end_point, http_method)
def _add_to_warning_list_if_exceeded_warning_timeout(self, elapsed_time, end_point):
if elapsed_time > config.WARNING_TIMEOUT:
self.warning_requests_list.append('GET ' + end_point)
def _add_to_warning_list_if_exceeded_warning_timeout_post(
self, elapsed_time, end_point, http_method):
if elapsed_time > config.WARNING_TIMEOUT_POST:
self.warning_requests_list.append(
http_method.value + ' ' + end_point)
def _send_get_request(self, end_point):
if self._auth_token is None:
response = utils.get_resource(
self._api_url + end_point, headers=self.headers)
else:
response = ua.get_protected_resource(
endpoint=self._api_url + end_point, token=self._auth_token,
headers=self.headers)
return response
def _send_post_request(self, end_point):
if self._auth_token is None:
response = utils.create_resource(
self._api_url + end_point, self.headers, payload={})
else:
response = ua.create_protected_resource(
endpoint=self._api_url + end_point, token=self._auth_token)
return response
def _send_put_request(self, end_point):
if self._auth_token is None:
response = utils.put_resource(
self._api_url + end_point, self.headers, payload={})
else:
response = ua.put_protected_resource(
endpoint=self._api_url + end_point, token=self._auth_token)
return response
def _send_delete_request(self, end_point):
if self._auth_token is None:
response = utils.delete_resource(self._api_url + end_point)
else:
response = ua.delete_protected_resource(
endpoint=self._api_url + end_point, token=self._auth_token)
return response