Exemplo n.º 1
0
	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
Exemplo n.º 2
0
 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
Exemplo n.º 3
0
 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
Exemplo n.º 4
0
 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
Exemplo n.º 5
0
 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
Exemplo n.º 6
0
	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
Exemplo n.º 7
0
 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
Exemplo n.º 8
0
    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
Exemplo n.º 9
0
    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
Exemplo n.º 10
0
 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
Exemplo n.º 11
0
 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
Exemplo n.º 12
0
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
Exemplo n.º 13
0
    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
Exemplo n.º 14
0
 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
Exemplo n.º 15
0
    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