def serve_file(fp, filename, content_type, last_modified=None, cache_expires=None, size=None, embed=True, etag=None): '''Sets the response headers and serves as a wsgi iter''' if not etag and filename and last_modified: etag = '{0}?{1}'.format(filename, last_modified).encode('utf-8') if etag: etag_cache(etag) tg.response.headers['Content-Type'] = str('') tg.response.content_type = str(content_type) tg.response.cache_expires = cache_expires or asint( tg.config.get('files_expires_header_secs', 60 * 60)) tg.response.last_modified = last_modified if size: tg.response.content_length = size if 'Pragma' in tg.response.headers: del tg.response.headers['Pragma'] if 'Cache-Control' in tg.response.headers: del tg.response.headers['Cache-Control'] if not embed: from allura.lib import helpers as h tg.response.headers.add( str('Content-Disposition'), str('attachment;filename="%s"' % h.urlquote(filename))) # http://code.google.com/p/modwsgi/wiki/FileWrapperExtension block_size = 4096 if 'wsgi.file_wrapper' in tg.request.environ: return tg.request.environ['wsgi.file_wrapper'](fp, block_size) else: return iter(lambda: fp.read(block_size), b'')
def serve_file(fp, filename, content_type, last_modified=None, cache_expires=None, size=None, embed=True, etag=None): '''Sets the response headers and serves as a wsgi iter''' if not etag and filename and last_modified: etag = u'{0}?{1}'.format(filename, last_modified).encode('utf-8') if etag: etag_cache(etag) tg.response.headers['Content-Type'] = '' tg.response.content_type = content_type.encode('utf-8') tg.response.cache_expires = cache_expires or asint( tg.config.get('files_expires_header_secs', 60 * 60)) tg.response.last_modified = last_modified if size: tg.response.content_length = size if 'Pragma' in tg.response.headers: del tg.response.headers['Pragma'] if 'Cache-Control' in tg.response.headers: del tg.response.headers['Cache-Control'] if not embed: tg.response.headers.add( 'Content-Disposition', 'attachment;filename="%s"' % filename.encode('utf-8')) # http://code.google.com/p/modwsgi/wiki/FileWrapperExtension block_size = 4096 if 'wsgi.file_wrapper' in tg.request.environ: return tg.request.environ['wsgi.file_wrapper'](fp, block_size) else: return iter(lambda: fp.read(block_size), '')
def etagged(self, etag): etag_cache(etag) return "bar"