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
1=== modified file 'burrow/backend/sqlite.py'
2--- burrow/backend/sqlite.py 2011-06-29 20:40:35 +0000
3+++ burrow/backend/sqlite.py 2011-07-15 16:26:08 +0000
4@@ -209,7 +209,7 @@
5 hide = row[2]
6 if hide > 0:
7 hide -= int(time.time())
8- return dict(id=row[0], ttl=ttl, hide=hide, body=row[3])
9+ return dict(id=row[0], ttl=ttl, hide=hide, body=str(row[3]))
10
11 def update_message(self, account, queue, message, attributes):
12 rowid = self._get_queue(account, queue)
13@@ -317,4 +317,4 @@
14 hide = row[2]
15 if hide > 0:
16 hide -= int(time.time())
17- yield dict(id=row[0], ttl=ttl, hide=hide, body=row[3])
18+ yield dict(id=row[0], ttl=ttl, hide=hide, body=str(row[3]))
19
20=== modified file 'burrow/frontend/wsgi.py'
21--- burrow/frontend/wsgi.py 2011-07-12 18:48:56 +0000
22+++ burrow/frontend/wsgi.py 2011-07-15 16:26:08 +0000
23@@ -113,44 +113,44 @@
24 def _route(self, req):
25 args = req.environ['wsgiorg.routing_args'][1]
26 if not args:
27- return webob.Response(status=404)
28+ return self._response(status=404)
29 action = args.pop('action')
30 method = getattr(self, '_%s_%s' % (req.method.lower(), action), False)
31 if not method:
32- return webob.Response(status=400)
33+ return self._response(status=400)
34 return method(req, **args)
35
36 @webob.dec.wsgify
37 def _get_root(self, _req):
38- return self._response(['v1.0'])
39+ return self._response(body=['v1.0'])
40
41 @webob.dec.wsgify
42 def _delete_version(self, req):
43 filters = self._parse_filters(req)
44 [account for account in self.backend.delete_accounts(filters)]
45- return webob.Response(status=204)
46+ return self._response()
47
48 @webob.dec.wsgify
49 def _get_version(self, req):
50 filters = self._parse_filters(req)
51 accounts = [account for account in self.backend.get_accounts(filters)]
52 if len(accounts) == 0:
53- return webob.Response(status=404)
54- return webob.Response(body=json.dumps(accounts, indent=2))
55+ return self._response(status=404)
56+ return self._response(body=accounts)
57
58 @webob.dec.wsgify
59 def _delete_account(self, req, account):
60 filters = self._parse_filters(req)
61 [queue for queue in self.backend.delete_queues(account, filters)]
62- return webob.Response(status=204)
63+ return self._response()
64
65 @webob.dec.wsgify
66 def _get_account(self, req, account):
67 filters = self._parse_filters(req)
68 queues = [queue for queue in self.backend.get_queues(account, filters)]
69 if len(queues) == 0:
70- return webob.Response(status=404)
71- return self._response(queues)
72+ return self._response(status=404)
73+ return self._response(body=queues)
74
75 @webob.dec.wsgify
76 @wait_on_queue
77@@ -181,14 +181,14 @@
78 def _delete_message(self, req, account, queue, message):
79 message = self.backend.delete_message(account, queue, message)
80 if message is None:
81- return webob.Response(status=404)
82+ return self._response(status=404)
83 return self._return_message(req, account, queue, message, 'none')
84
85 @webob.dec.wsgify
86 def _get_message(self, req, account, queue, message):
87 message = self.backend.get_message(account, queue, message)
88 if message is None:
89- return webob.Response(status=404)
90+ return self._response(status=404)
91 return self._return_message(req, account, queue, message, 'all')
92
93 @webob.dec.wsgify
94@@ -197,7 +197,7 @@
95 message = self.backend.update_message(account, queue, message,
96 attributes)
97 if message is None:
98- return webob.Response(status=404)
99+ return self._response(status=404)
100 return self._return_message(req, account, queue, message, 'id')
101
102 @webob.dec.wsgify
103@@ -206,11 +206,11 @@
104 self.default_hide)
105 body = ''
106 for chunk in iter(lambda: req.body_file.read(16384), ''):
107- body += chunk
108+ body += str(chunk)
109 if self.backend.create_message(account, queue, message, body,
110 attributes):
111- return webob.Response(status=201)
112- return webob.Response(status=204)
113+ return self._response(status=201)
114+ return self._response()
115
116 def _filter_message(self, detail, message):
117 if detail == 'id':
118@@ -227,16 +227,16 @@
119 if 'detail' in req.params:
120 detail = req.params['detail']
121 if detail == 'body':
122- return webob.Response(body=body,
123+ return self._response(body=message['body'],
124 content_type="application/octet-stream")
125 message = self._filter_message(detail, message)
126 if message is not None:
127- return self._response(message)
128- return webob.Response(status=204)
129+ return self._response(body=message)
130+ return self._response()
131
132 def _return_messages(self, req, account, queue, messages, detail):
133 if len(messages) == 0:
134- return webob.Response(status=404)
135+ return self._response(status=404)
136 if 'detail' in req.params:
137 detail = req.params['detail']
138 filtered_messages = []
139@@ -245,8 +245,8 @@
140 if message is not None:
141 filtered_messages.append(message)
142 if len(filtered_messages) == 0:
143- return webob.Response(status=204)
144- return self._response(filtered_messages)
145+ return self._response()
146+ return self._response(body=filtered_messages)
147
148 def _parse_filters(self, req):
149 filters = {}
150@@ -273,9 +273,18 @@
151 attributes['hide'] = hide
152 return attributes
153
154- def _response(self, body):
155- body=json.dumps(body, indent=2)
156- return webob.Response(body=body, content_type="application/json")
157+ def _response(self, status=200, body=None, content_type=None):
158+ if content_type is None:
159+ if body is None:
160+ content_type = ''
161+ else:
162+ content_type = 'application/json'
163+ if content_type is 'application/json':
164+ body=json.dumps(body, indent=2)
165+ if body is None and status == 200:
166+ status = 204
167+ return webob.Response(status=status, body=body,
168+ content_type=content_type)
169
170
171 class WSGILog(object):

Subscribers

People subscribed via source and target branches