Revision 3dabe5d2 kamaki/clients/connection/__init__.py
b/kamaki/clients/connection/__init__.py | ||
---|---|---|
31 | 31 |
# interpreted as representing official policies, either expressed |
32 | 32 |
# or implied, of GRNET S.A. |
33 | 33 |
|
34 |
|
|
34 | 35 |
class HTTPResponse(object): |
35 | 36 |
|
36 | 37 |
def __init__(self, request=None, prefetched=False): |
37 |
self.request=request
|
|
38 |
self.request = request
|
|
38 | 39 |
self.prefetched = prefetched |
39 | 40 |
|
40 | 41 |
def _get_response(self): |
... | ... | |
49 | 50 |
Use this after finished using the response""" |
50 | 51 |
raise NotImplementedError |
51 | 52 |
|
52 |
@property
|
|
53 |
@property |
|
53 | 54 |
def prefetched(self): |
54 | 55 |
return self._prefetched |
56 |
|
|
55 | 57 |
@prefetched.setter |
56 | 58 |
def prefetched(self, p): |
57 | 59 |
self._prefetched = p |
58 | 60 |
|
59 |
@property
|
|
61 |
@property |
|
60 | 62 |
def content(self): |
61 | 63 |
self._get_response() |
62 | 64 |
return self._content |
63 |
@content.setter |
|
65 |
|
|
66 |
@content.setter |
|
64 | 67 |
def content(self, v): |
65 | 68 |
self._content = v |
66 | 69 |
|
67 |
@property
|
|
70 |
@property |
|
68 | 71 |
def text(self): |
69 | 72 |
self._get_response() |
70 | 73 |
return self._text |
71 |
@text.setter |
|
74 |
|
|
75 |
@text.setter |
|
72 | 76 |
def text(self, v): |
73 | 77 |
self._text = v |
74 | 78 |
|
75 |
@property
|
|
79 |
@property |
|
76 | 80 |
def json(self): |
77 | 81 |
self._get_response() |
78 | 82 |
return self._json |
79 |
@json.setter |
|
83 |
|
|
84 |
@json.setter |
|
80 | 85 |
def json(self, v): |
81 | 86 |
self._json = v |
82 | 87 |
|
83 |
@property
|
|
88 |
@property |
|
84 | 89 |
def headers(self): |
85 | 90 |
self._get_response() |
86 | 91 |
return self._headers |
87 |
@headers.setter |
|
92 |
|
|
93 |
@headers.setter |
|
88 | 94 |
def headers(self, v): |
89 | 95 |
self._headers = v |
90 | 96 |
|
91 |
@property
|
|
97 |
@property |
|
92 | 98 |
def status_code(self): |
93 | 99 |
self._get_response() |
94 | 100 |
return self._status_code |
95 |
@status_code.setter |
|
101 |
|
|
102 |
@status_code.setter |
|
96 | 103 |
def status_code(self, v): |
97 | 104 |
self._status_code = v |
98 | 105 |
|
99 |
@property
|
|
106 |
@property |
|
100 | 107 |
def status(self): |
101 | 108 |
self._get_response() |
102 | 109 |
return self._status |
103 |
@status.setter |
|
110 |
|
|
111 |
@status.setter |
|
104 | 112 |
def status(self, v): |
105 | 113 |
self._status = v |
106 | 114 |
|
107 |
@property
|
|
115 |
@property |
|
108 | 116 |
def request(self): |
109 | 117 |
return self._request |
110 |
@request.setter |
|
118 |
|
|
119 |
@request.setter |
|
111 | 120 |
def request(self, v): |
112 | 121 |
self._request = v |
113 | 122 |
|
123 |
|
|
114 | 124 |
class HTTPConnectionError(Exception): |
115 | 125 |
def __init__(self, message, status=0, details=''): |
116 |
super(HTTPConnectionError, self).__init__(message)
|
|
126 |
super(HTTPConnectionError, self).__init__(message)
|
|
117 | 127 |
self.message = message |
118 | 128 |
self.status = status |
119 | 129 |
self.details = details |
120 | 130 |
|
131 |
|
|
121 | 132 |
class HTTPConnection(object): |
122 | 133 |
|
123 | 134 |
def __init__(self, method=None, url=None, params={}, headers={}): |
124 |
self.headers = headers
|
|
125 |
self.params = params
|
|
126 |
self.url = url
|
|
127 |
self.method = method
|
|
135 |
self.headers = headers
|
|
136 |
self.params = params
|
|
137 |
self.url = url
|
|
138 |
self.method = method
|
|
128 | 139 |
|
129 | 140 |
def raise_for_status(self, r): |
130 | 141 |
message = "%d %s" % (r.status_code, r.status) |
... | ... | |
135 | 146 |
raise HTTPConnectionError(message, r.status_code, details) |
136 | 147 |
|
137 | 148 |
def set_header(self, name, value): |
138 |
self.headers[unicode(name)] = unicode(value)
|
|
149 |
self.headers[unicode(name)] = unicode(value)
|
|
139 | 150 |
|
140 | 151 |
def remove_header(self, name): |
141 |
try:
|
|
142 |
self.headers.pop(name)
|
|
143 |
except KeyError:
|
|
144 |
pass
|
|
152 |
try:
|
|
153 |
self.headers.pop(name)
|
|
154 |
except KeyError:
|
|
155 |
pass
|
|
145 | 156 |
|
146 | 157 |
def replace_headers(self, new_headers): |
147 |
self.headers = new_headers
|
|
158 |
self.headers = new_headers
|
|
148 | 159 |
|
149 | 160 |
def reset_headers(self): |
150 |
self.replace_headers({})
|
|
161 |
self.replace_headers({})
|
|
151 | 162 |
|
152 | 163 |
def set_param(self, name, value=None): |
153 |
self.params[name] = value
|
|
164 |
self.params[name] = value
|
|
154 | 165 |
|
155 | 166 |
def remove_param(self, name): |
156 |
try:
|
|
157 |
self.params.pop(name)
|
|
158 |
except KeyError:
|
|
159 |
pass
|
|
167 |
try:
|
|
168 |
self.params.pop(name)
|
|
169 |
except KeyError:
|
|
170 |
pass
|
|
160 | 171 |
|
161 | 172 |
def replace_params(self, new_params): |
162 |
self.params = new_params
|
|
173 |
self.params = new_params
|
|
163 | 174 |
|
164 | 175 |
def reset_params(self): |
165 |
self.replace_params({})
|
|
176 |
self.replace_params({})
|
|
166 | 177 |
|
167 | 178 |
def set_url(self, url): |
168 |
self.url = url
|
|
179 |
self.url = url
|
|
169 | 180 |
|
170 | 181 |
def set_method(self, method): |
171 |
self.method = method |
|
172 |
|
|
173 |
def perform_request(self, method=None, url=None, async_headers={}, async_params={}, data=None): |
|
174 |
""" |
|
175 |
@return an HTTPResponse (also in self.response of this object) |
|
176 |
named args offer the ability to reset a request or a part of the request |
|
177 |
e.g. r = HTTPConnection(url='http://....', method='GET') |
|
178 |
r.perform_request() |
|
179 |
r.perform_request(method='POST') |
|
180 |
will perform a GET request and later a POST request on the same URL |
|
181 |
another example: |
|
182 |
r = HTTPConnection(url='http://....', params='format=json') |
|
183 |
r.perform_request(method='GET') |
|
184 |
r.perform_request(method='POST') |
|
185 |
""" |
|
186 |
raise NotImplementedError |
|
182 |
self.method = method |
|
183 |
|
|
184 |
def perform_request(self, |
|
185 |
method=None, |
|
186 |
url=None, |
|
187 |
async_headers={}, |
|
188 |
async_params={}, |
|
189 |
data=None): |
|
190 |
""" |
|
191 |
@return an HTTPResponse (also in self.response of this object) |
|
192 |
named args offer the ability to reset a request or a part of the |
|
193 |
request |
|
194 |
e.g. r = HTTPConnection(url='http://....', method='GET') |
|
195 |
r.perform_request() |
|
196 |
r.perform_request(method='POST') |
|
197 |
will perform a GET request and later a POST request on the same URL |
|
198 |
another example: |
|
199 |
r = HTTPConnection(url='http://....', params='format=json') |
|
200 |
r.perform_request(method='GET') |
|
201 |
r.perform_request(method='POST') |
|
202 |
""" |
|
203 |
raise NotImplementedError |
|
187 | 204 |
|
188 | 205 |
""" |
189 |
@property
|
|
206 |
@property |
|
190 | 207 |
def response(self): |
191 | 208 |
return self._response |
192 | 209 |
@response.setter |
Also available in: Unified diff