Merge lp:~eday/burrow/fix-headers into lp:burrow

Proposed by Eric Day
Status: Merged
Approved by: Eric Day
Approved revision: 24
Merged at revision: 24
Proposed branch: lp:~eday/burrow/fix-headers
Merge into: lp:burrow
Diff against target: 171 lines (+35/-26)
2 files modified
burrow/backend/sqlite.py (+2/-2)
burrow/frontend/wsgi.py (+33/-24)
To merge this branch: bzr merge lp:~eday/burrow/fix-headers
Reviewer Review Type Date Requested Status
Burrow Core Team Pending
Review via email: mp+68113@code.launchpad.net

Description of the change

Fixed WSGI response headers.

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'burrow/backend/sqlite.py'
--- burrow/backend/sqlite.py 2011-06-29 20:40:35 +0000
+++ burrow/backend/sqlite.py 2011-07-15 16:26:08 +0000
@@ -209,7 +209,7 @@
209 hide = row[2]209 hide = row[2]
210 if hide > 0:210 if hide > 0:
211 hide -= int(time.time())211 hide -= int(time.time())
212 return dict(id=row[0], ttl=ttl, hide=hide, body=row[3])212 return dict(id=row[0], ttl=ttl, hide=hide, body=str(row[3]))
213213
214 def update_message(self, account, queue, message, attributes):214 def update_message(self, account, queue, message, attributes):
215 rowid = self._get_queue(account, queue)215 rowid = self._get_queue(account, queue)
@@ -317,4 +317,4 @@
317 hide = row[2]317 hide = row[2]
318 if hide > 0:318 if hide > 0:
319 hide -= int(time.time())319 hide -= int(time.time())
320 yield dict(id=row[0], ttl=ttl, hide=hide, body=row[3])320 yield dict(id=row[0], ttl=ttl, hide=hide, body=str(row[3]))
321321
=== modified file 'burrow/frontend/wsgi.py'
--- burrow/frontend/wsgi.py 2011-07-12 18:48:56 +0000
+++ burrow/frontend/wsgi.py 2011-07-15 16:26:08 +0000
@@ -113,44 +113,44 @@
113 def _route(self, req):113 def _route(self, req):
114 args = req.environ['wsgiorg.routing_args'][1]114 args = req.environ['wsgiorg.routing_args'][1]
115 if not args:115 if not args:
116 return webob.Response(status=404)116 return self._response(status=404)
117 action = args.pop('action')117 action = args.pop('action')
118 method = getattr(self, '_%s_%s' % (req.method.lower(), action), False)118 method = getattr(self, '_%s_%s' % (req.method.lower(), action), False)
119 if not method:119 if not method:
120 return webob.Response(status=400)120 return self._response(status=400)
121 return method(req, **args)121 return method(req, **args)
122122
123 @webob.dec.wsgify123 @webob.dec.wsgify
124 def _get_root(self, _req):124 def _get_root(self, _req):
125 return self._response(['v1.0'])125 return self._response(body=['v1.0'])
126126
127 @webob.dec.wsgify127 @webob.dec.wsgify
128 def _delete_version(self, req):128 def _delete_version(self, req):
129 filters = self._parse_filters(req)129 filters = self._parse_filters(req)
130 [account for account in self.backend.delete_accounts(filters)]130 [account for account in self.backend.delete_accounts(filters)]
131 return webob.Response(status=204)131 return self._response()
132132
133 @webob.dec.wsgify133 @webob.dec.wsgify
134 def _get_version(self, req):134 def _get_version(self, req):
135 filters = self._parse_filters(req)135 filters = self._parse_filters(req)
136 accounts = [account for account in self.backend.get_accounts(filters)]136 accounts = [account for account in self.backend.get_accounts(filters)]
137 if len(accounts) == 0:137 if len(accounts) == 0:
138 return webob.Response(status=404)138 return self._response(status=404)
139 return webob.Response(body=json.dumps(accounts, indent=2))139 return self._response(body=accounts)
140140
141 @webob.dec.wsgify141 @webob.dec.wsgify
142 def _delete_account(self, req, account):142 def _delete_account(self, req, account):
143 filters = self._parse_filters(req)143 filters = self._parse_filters(req)
144 [queue for queue in self.backend.delete_queues(account, filters)]144 [queue for queue in self.backend.delete_queues(account, filters)]
145 return webob.Response(status=204)145 return self._response()
146146
147 @webob.dec.wsgify147 @webob.dec.wsgify
148 def _get_account(self, req, account):148 def _get_account(self, req, account):
149 filters = self._parse_filters(req)149 filters = self._parse_filters(req)
150 queues = [queue for queue in self.backend.get_queues(account, filters)]150 queues = [queue for queue in self.backend.get_queues(account, filters)]
151 if len(queues) == 0:151 if len(queues) == 0:
152 return webob.Response(status=404)152 return self._response(status=404)
153 return self._response(queues)153 return self._response(body=queues)
154154
155 @webob.dec.wsgify155 @webob.dec.wsgify
156 @wait_on_queue156 @wait_on_queue
@@ -181,14 +181,14 @@
181 def _delete_message(self, req, account, queue, message):181 def _delete_message(self, req, account, queue, message):
182 message = self.backend.delete_message(account, queue, message)182 message = self.backend.delete_message(account, queue, message)
183 if message is None:183 if message is None:
184 return webob.Response(status=404)184 return self._response(status=404)
185 return self._return_message(req, account, queue, message, 'none')185 return self._return_message(req, account, queue, message, 'none')
186186
187 @webob.dec.wsgify187 @webob.dec.wsgify
188 def _get_message(self, req, account, queue, message):188 def _get_message(self, req, account, queue, message):
189 message = self.backend.get_message(account, queue, message)189 message = self.backend.get_message(account, queue, message)
190 if message is None:190 if message is None:
191 return webob.Response(status=404)191 return self._response(status=404)
192 return self._return_message(req, account, queue, message, 'all')192 return self._return_message(req, account, queue, message, 'all')
193193
194 @webob.dec.wsgify194 @webob.dec.wsgify
@@ -197,7 +197,7 @@
197 message = self.backend.update_message(account, queue, message,197 message = self.backend.update_message(account, queue, message,
198 attributes)198 attributes)
199 if message is None:199 if message is None:
200 return webob.Response(status=404)200 return self._response(status=404)
201 return self._return_message(req, account, queue, message, 'id')201 return self._return_message(req, account, queue, message, 'id')
202202
203 @webob.dec.wsgify203 @webob.dec.wsgify
@@ -206,11 +206,11 @@
206 self.default_hide)206 self.default_hide)
207 body = ''207 body = ''
208 for chunk in iter(lambda: req.body_file.read(16384), ''):208 for chunk in iter(lambda: req.body_file.read(16384), ''):
209 body += chunk209 body += str(chunk)
210 if self.backend.create_message(account, queue, message, body,210 if self.backend.create_message(account, queue, message, body,
211 attributes):211 attributes):
212 return webob.Response(status=201)212 return self._response(status=201)
213 return webob.Response(status=204)213 return self._response()
214214
215 def _filter_message(self, detail, message):215 def _filter_message(self, detail, message):
216 if detail == 'id':216 if detail == 'id':
@@ -227,16 +227,16 @@
227 if 'detail' in req.params:227 if 'detail' in req.params:
228 detail = req.params['detail']228 detail = req.params['detail']
229 if detail == 'body':229 if detail == 'body':
230 return webob.Response(body=body,230 return self._response(body=message['body'],
231 content_type="application/octet-stream")231 content_type="application/octet-stream")
232 message = self._filter_message(detail, message)232 message = self._filter_message(detail, message)
233 if message is not None:233 if message is not None:
234 return self._response(message)234 return self._response(body=message)
235 return webob.Response(status=204)235 return self._response()
236236
237 def _return_messages(self, req, account, queue, messages, detail):237 def _return_messages(self, req, account, queue, messages, detail):
238 if len(messages) == 0:238 if len(messages) == 0:
239 return webob.Response(status=404)239 return self._response(status=404)
240 if 'detail' in req.params:240 if 'detail' in req.params:
241 detail = req.params['detail']241 detail = req.params['detail']
242 filtered_messages = []242 filtered_messages = []
@@ -245,8 +245,8 @@
245 if message is not None:245 if message is not None:
246 filtered_messages.append(message)246 filtered_messages.append(message)
247 if len(filtered_messages) == 0:247 if len(filtered_messages) == 0:
248 return webob.Response(status=204)248 return self._response()
249 return self._response(filtered_messages)249 return self._response(body=filtered_messages)
250250
251 def _parse_filters(self, req):251 def _parse_filters(self, req):
252 filters = {}252 filters = {}
@@ -273,9 +273,18 @@
273 attributes['hide'] = hide273 attributes['hide'] = hide
274 return attributes274 return attributes
275275
276 def _response(self, body):276 def _response(self, status=200, body=None, content_type=None):
277 body=json.dumps(body, indent=2)277 if content_type is None:
278 return webob.Response(body=body, content_type="application/json")278 if body is None:
279 content_type = ''
280 else:
281 content_type = 'application/json'
282 if content_type is 'application/json':
283 body=json.dumps(body, indent=2)
284 if body is None and status == 200:
285 status = 204
286 return webob.Response(status=status, body=body,
287 content_type=content_type)
279288
280289
281class WSGILog(object):290class WSGILog(object):

Subscribers

People subscribed via source and target branches