-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAPIRequests.py
More file actions
68 lines (60 loc) · 2.41 KB
/
APIRequests.py
File metadata and controls
68 lines (60 loc) · 2.41 KB
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
"""
This file contains common methods to execute API requests.
"""
import requests
from .LoggerUtils import set_logger
# Global defines
GET_METHOD = "GET"
POST_METHOD = "POST"
PUT_METHOD = "PUT"
DELETE_METHOD = "DELETE"
class APIRequests:
def __init__(self, base_url, req_timeout=10):
"""
Initializing APIRequests.
:param base_url: Base URL.
:param req_timeout: request timeout.
"""
self.base_url = base_url
self.timeout = req_timeout
self.header = {"content-type": "application/json"}
self.logger = set_logger(__name__)
def execute_api_request(self, request_type, endpoint, data="", header=""):
"""
Method to execute given requests (GET, POST, PUT, DELETE).
:param request_type: request type that want to execute
:param endpoint: API endpoint
:param data: API data
:param header: API header
:return: status_code: API status code
response: API returned response
"""
self.logger.info("inside api method")
response, status_code = "", None
if header == "":
header = self.header
try:
URL = self.base_url + endpoint
if request_type == GET_METHOD:
response = requests.get(url=URL, timeout=self.timeout)
elif request_type == POST_METHOD:
response = requests.post(url=URL, headers=header, data=data, timeout=self.timeout)
elif request_type == PUT_METHOD:
response = requests.put(url=URL, headers=header, data=data, timeout=self.timeout)
elif request_type == DELETE_METHOD:
response = requests.delete(url=URL, timeout=self.timeout)
else:
response = "Invalid request type found"
status_code = response.status_code
response = response.json()
except requests.exceptions.HTTPError as exhttp:
response = exhttp
except requests.exceptions.ConnectionError as exconn:
response = exconn
except requests.exceptions.Timeout as extimeout:
response = extimeout
except requests.exceptions.RequestException as exreq:
response = exreq
except Exception as ex:
response = "Exception raised during execution of {} request, exception is : {}".format(request_type, ex)
return status_code, response