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
|
#!/usr/bin/env python
'''Alpine/Chorus Client API Module'''
import logging
import requests
LOG = logging.Logger(name=__name__)
CONTENT_TYPE = 'application/x-www-form-urlencoded'
JSON_CONTENT_TYPE = 'application/json'
def get(url, session):
'''Perform GET request using current session'''
isok, json, cookies = _perform_http_method_(
session.config.get('alpine', 'host'),
_get_(url, session.sid, session.cookies))
session.cookies = cookies
return (isok, json,)
def post(url, session, data=None):
'''Perform POST request using current session'''
isok, json, cookies = _perform_http_method_(
session.config.get('alpine', 'host'),
_post_(url, session.sid, session.cookies, data=data))
session.cookies = cookies
return (isok, json,)
def put(url, session, data=None):
'''Perform PUT request using current session'''
isok, json, cookies = _perform_http_method_(
session.config.get('alpine', 'host'),
_put_(url, session.sid, session.cookies, data=data))
session.cookies = cookies
return (isok, json,)
def delete(url, session):
'''Perform DELETE request using current session'''
isok, json, cookies = _perform_http_method_(
session.config.get('alpine', 'host'),
_delete_(url, session.sid, session.cookies))
session.cookies = cookies
return (isok, json,)
def _get_url_(host, endpoint=""):
'''Return the host and path for the chorus instance'''
return "http://%s/%s" % (host, endpoint)
def _perform_http_method_(host, request_data):
'''Perform IO operation to Chorus Server using request_data object'''
methods = {'GET': requests.get,
'POST': requests.post,
'PUT': requests.put,
'DELETE': requests.delete,}
method = methods[request_data['method']]
response = method(_get_url_(host, request_data['url']),
params=request_data['params'],
headers=request_data['headers'],
cookies=request_data['cookies'],
data=request_data['data'])
LOG.info("Request: %s status code: %d",
request_data['url'],
response.status_code)
return (response.status_code, response.json(), dict(response.cookies),)
def _get_(url, sid, cookies):
'''Create GET request data'''
return {
'data': None,
'params': {
'session_id': sid,
},
'headers': {
'content-type': CONTENT_TYPE,
},
'cookies': cookies,
'url': url,
'method': 'GET',
}
def _post_(url, sid, cookies, data):
'''Create POST request data'''
return {
'data': data,
'params': {
'session_id': sid,
},
'headers': {
'content-type': CONTENT_TYPE,
},
'cookies': cookies,
'url': url,
'method': 'POST',
}
def _put_(url, sid, cookies, data):
'''Create PUT request data'''
return {
'data': data,
'params': {
'session_id': sid,
},
'headers': {
'content-type': CONTENT_TYPE,
},
'cookies': cookies,
'url': url,
'method': 'PUT',
}
def _delete_(url, sid, cookies):
'''Create DELETE request data'''
return {
'data': None,
'params': {
'session_id': sid,
},
'headers': {
'content-type': CONTENT_TYPE,
},
'cookies': cookies,
'url': url,
'method': 'DELETE',
}
|