equal
deleted
inserted
replaced
122 Redirect to the image frontend for a non-tile request. |
122 Redirect to the image frontend for a non-tile request. |
123 """ |
123 """ |
124 |
124 |
125 return redirect(self.image_url(name)) |
125 return redirect(self.image_url(name)) |
126 |
126 |
127 def handle_region (self, request): |
|
128 """ |
|
129 Return image/png for given region. |
|
130 """ |
|
131 |
|
132 image, name = self.open(request.path) |
|
133 |
|
134 png = self.render_region(request, image) |
|
135 |
|
136 return Response(png, content_type='image/png') |
|
137 |
|
138 def handle_tile (self, request): |
|
139 """ |
|
140 Return image/png for given tile. |
|
141 """ |
|
142 |
|
143 image, name = self.open(request.path) |
|
144 |
|
145 png = self.render_tile(request, image) |
|
146 |
|
147 return Response(png, content_type='image/png') |
|
148 |
|
149 def handle (self, request): |
127 def handle (self, request): |
150 """ |
128 """ |
151 Handle request for an image |
129 Handle request for an image |
152 """ |
130 """ |
153 |
131 |
159 |
137 |
160 elif not request.args: |
138 elif not request.args: |
161 return self.handle_image(request, name, path) |
139 return self.handle_image(request, name, path) |
162 |
140 |
163 elif 'w' in request.args and 'h' in request.args and 'x' in request.args and 'y' in request.args: |
141 elif 'w' in request.args and 'h' in request.args and 'x' in request.args and 'y' in request.args: |
164 return self.handle_region(request) |
142 render_func = self.render_region |
165 |
143 |
166 elif 'x' in request.args and 'y' in request.args: |
144 elif 'x' in request.args and 'y' in request.args: |
167 return self.handle_tile(request) |
145 render_func = self.render_tile |
168 |
146 |
169 else: |
147 else: |
170 raise exceptions.BadRequest("Unknown args") |
148 raise exceptions.BadRequest("Unknown args") |
|
149 |
|
150 # handle image |
|
151 image, name = self.open(request.path) |
171 |
152 |
|
153 # http caching |
|
154 mtime = image.cache_mtime() |
|
155 |
|
156 if request.if_modified_since and mtime == request.if_modified_since: |
|
157 return Response(status=304) |
|
158 |
|
159 # render |
|
160 png = render_func(request, image) |
|
161 |
|
162 # response |
|
163 response = Response(png, content_type='image/png') |
|
164 response.last_modified = mtime |
|
165 |
|
166 return response |
|
167 |
|
168 |