Merge pull request #506 from Unrud/patch-1
Move encoding of answer into response function
This commit is contained in:
commit
e6433ec970
@ -265,6 +265,28 @@ class Application:
|
|||||||
"""Manage a request."""
|
"""Manage a request."""
|
||||||
|
|
||||||
def response(status, headers={}, answer=None):
|
def response(status, headers={}, answer=None):
|
||||||
|
headers = headers.copy()
|
||||||
|
# Set content length
|
||||||
|
if answer:
|
||||||
|
self.logger.debug("Response content:\n%s", answer)
|
||||||
|
answer = answer.encode(self.encoding)
|
||||||
|
accept_encoding = [
|
||||||
|
encoding.strip() for encoding in
|
||||||
|
environ.get("HTTP_ACCEPT_ENCODING", "").split(",")
|
||||||
|
if encoding.strip()]
|
||||||
|
|
||||||
|
if "gzip" in accept_encoding:
|
||||||
|
zcomp = zlib.compressobj(wbits=16 + zlib.MAX_WBITS)
|
||||||
|
answer = zcomp.compress(answer) + zcomp.flush()
|
||||||
|
headers["Content-Encoding"] = "gzip"
|
||||||
|
|
||||||
|
headers["Content-Length"] = str(len(answer))
|
||||||
|
|
||||||
|
# Add extra headers set in configuration
|
||||||
|
if self.configuration.has_section("headers"):
|
||||||
|
for key in self.configuration.options("headers"):
|
||||||
|
headers[key] = self.configuration.get("headers", key)
|
||||||
|
|
||||||
# Start response
|
# Start response
|
||||||
status = "%i %s" % (
|
status = "%i %s" % (
|
||||||
status, client.responses.get(status, "Unknown"))
|
status, client.responses.get(status, "Unknown"))
|
||||||
@ -359,31 +381,11 @@ class Application:
|
|||||||
self.logger.info("%s refused" % (user or "Anonymous user"))
|
self.logger.info("%s refused" % (user or "Anonymous user"))
|
||||||
status = client.UNAUTHORIZED
|
status = client.UNAUTHORIZED
|
||||||
realm = self.configuration.get("server", "realm")
|
realm = self.configuration.get("server", "realm")
|
||||||
|
headers = headers.copy()
|
||||||
headers.update ({
|
headers.update ({
|
||||||
"WWW-Authenticate":
|
"WWW-Authenticate":
|
||||||
"Basic realm=\"%s\"" % realm})
|
"Basic realm=\"%s\"" % realm})
|
||||||
|
|
||||||
# Set content length
|
|
||||||
if answer:
|
|
||||||
self.logger.debug("Response content:\n%s", answer)
|
|
||||||
answer = answer.encode(self.encoding)
|
|
||||||
accept_encoding = [
|
|
||||||
encoding.strip() for encoding in
|
|
||||||
environ.get("HTTP_ACCEPT_ENCODING", "").split(",")
|
|
||||||
if encoding.strip()]
|
|
||||||
|
|
||||||
if "gzip" in accept_encoding:
|
|
||||||
zcomp = zlib.compressobj(wbits=16 + zlib.MAX_WBITS)
|
|
||||||
answer = zcomp.compress(answer) + zcomp.flush()
|
|
||||||
headers["Content-Encoding"] = "gzip"
|
|
||||||
|
|
||||||
headers["Content-Length"] = str(len(answer))
|
|
||||||
|
|
||||||
# Add extra headers set in configuration
|
|
||||||
if self.configuration.has_section("headers"):
|
|
||||||
for key in self.configuration.options("headers"):
|
|
||||||
headers[key] = self.configuration.get("headers", key)
|
|
||||||
|
|
||||||
return response(status, headers, answer)
|
return response(status, headers, answer)
|
||||||
|
|
||||||
def _access(self, user, path, permission, item=None):
|
def _access(self, user, path, permission, item=None):
|
||||||
|
Loading…
Reference in New Issue
Block a user