def get_favicon(self, request): f = path.join(self.www_dp, 'icons', 'loris-icon.png') r = Response(file(f), content_type='image/x-icon') if self.enable_caching: r.add_etag() r.make_conditional(request) return r
def get_favicon(self, request): f = path.join(self.www_dp, 'icons', 'favicon.ico') r = Response(open(f, 'rb'), content_type='image/x-icon') if self.enable_caching: r.add_etag() r.make_conditional(request) return r
def create_response(self, request, tile_data, format): response = Response(tile_data, mimetype=format.mimetype, headers=[('Access-Control-Allow-Origin', '*')]) response.add_etag() response.make_conditional(request) return response
def create_response(self, request, tile_data, format): response = Response( tile_data, mimetype=format.mimetype, headers=[('Access-Control-Allow-Origin', '*')]) response.add_etag() response.make_conditional(request) return response
def get_index(self, request): ''' Just so there's something at /. ''' f = file(path.join(self.www_dp, 'index.txt')) r = Response(f, content_type='text/plain') if self.enable_caching: r.add_etag() r.make_conditional(request) return r
def get_index(self, request): ''' Just so there's something at /. ''' f = open(path.join(self.www_dp, 'index.txt'), 'rb') r = Response(f, content_type='text/plain') if self.enable_caching: r.add_etag() r.make_conditional(request) return r
def create_response(self, request, status, body, mimetype): response_args = dict( status=status, mimetype=mimetype, ) if self.add_cors_headers: response_args['headers'] = [('Access-Control-Allow-Origin', '*')] response = Response(body, **response_args) if status == 200: response.add_etag() response.make_conditional(request) return response
def handle_request(self, request): if not request.path.endswith('.png'): return self.generate_404() vector_tile_service_path = request.path.replace('.png', '.json') fetch_result = self.fetcher(vector_tile_service_path) if fetch_result.is_error: return self.error_fetch_response(self, fetch_result) json_data = fetch_result.content feature_layers = transform_to_feature_layers(json_data) gif_content = self.mapnik_formatter(feature_layers) response = Response(gif_content, mimetype='image/png', headers=[('Access-Control-Allow-Origin', '*')]) response.add_etag() response.make_conditional(request) return response
def avatar(request, pool, uuid): Avatar = pool.get('ir.avatar') try: avatar, = Avatar.search([ ('uuid', '=', uuid), ]) except ValueError: abort(HTTPStatus.NOT_FOUND) try: size = int(request.args.get('s', 64)) except ValueError: abort(HTTPStatus.BAD_REQUEST) response = Response(avatar.get(size), mimetype='image/jpeg') response.headers['Cache-Control'] = ('max-age=%s, public' % AVATAR_TIMEOUT) response.add_etag() return response
def render_static(self, request, fileobj): if request.method != 'GET': raise http.MethodNotAllowed(['GET']) content_type, _ = mimetypes.guess_type(fileobj.name) stat = os.stat(fileobj.name) etag = hashlib.md5(str(stat.st_mtime)).hexdigest() response = Response(fileobj, mimetype=content_type) response.content_length = stat.st_size response.add_etag(etag) response.last_modified = datetime.utcfromtimestamp(stat.st_mtime) response.expires = datetime.utcfromtimestamp(stat.st_mtime + self.static_expires) response.make_conditional(request) return response
def wrapped(environ, start_response): req = Request(environ) path = req.path cached = cache.get(path) if cached and not ( req.cache_control.no_store or req.cache_control.no_cache): updated_time, content, status, headers = cached if updated_time + expiry > datetime.datetime.now(): # Cached version still valid browser_cache_valid = False etag = str(hash(content)) if req.if_none_match.contains(etag): browser_cache_valid = True if req.if_modified_since: if updated_time < req.if_modified_since: browser_cache_valid = True if browser_cache_valid: start_response('304 Not Modified', []) return [] else: response = Response(content, status, headers) response.add_etag(etag) response.date = datetime.datetime.now() return response(environ, start_response) # Cached version not valid sent_status = None sent_headers = [] def inner_start_response(status, headers, exc=None): nonlocal sent_status, sent_headers if exc: start_response(status, headers, exc) else: sent_status = status sent_headers = list(headers) response_iter = f(environ, inner_start_response) if sent_status: # Success! Cache and send response content = tuple(response_iter) cache[path] = (datetime.datetime.now(), content, sent_status, sent_headers) response = Response(content, sent_status, sent_headers) response.set_etag(str(hash(content))) response.date = datetime.datetime.now() return response(environ, start_response) else: # Don't cache the exception handler, just propagate return response_iter
def create_response(self, request, status, body, mimetype): response_args = dict( status=status, mimetype=mimetype, ) headers = [] if self.add_cors_headers: headers.append(('Access-Control-Allow-Origin', '*')) if self.max_age: headers.append(('Cache-Control', 'max-age=%d' % self.max_age)) if headers: response_args['headers'] = headers response = Response(body, **response_args) if status == 200: response.add_etag() response.make_conditional(request) return response