mirror of
https://github.com/EDCD/EDDN.git
synced 2025-04-27 21:52:14 +03:00
Gateway: Pass headers and body into get_decompressed_message()
This makes it easier to write unit tests for this function, not having to somehow mock up the bottle request/body stuff.
This commit is contained in:
parent
580160b95b
commit
e28ab45be4
@ -169,7 +169,7 @@ def get_remote_address() -> str:
|
|||||||
return request.headers.get("X-Forwarded-For", request.remote_addr)
|
return request.headers.get("X-Forwarded-For", request.remote_addr)
|
||||||
|
|
||||||
|
|
||||||
def get_decompressed_message() -> bytes:
|
def get_decompressed_message(headers: dict, input: bytes) -> bytes:
|
||||||
"""
|
"""
|
||||||
Detect gzip Content-Encoding headers and de-compress on the fly.
|
Detect gzip Content-Encoding headers and de-compress on the fly.
|
||||||
|
|
||||||
@ -177,7 +177,7 @@ def get_decompressed_message() -> bytes:
|
|||||||
:rtype: str
|
:rtype: str
|
||||||
:returns: The de-compressed request body.
|
:returns: The de-compressed request body.
|
||||||
"""
|
"""
|
||||||
content_encoding = request.headers.get("Content-Encoding", "")
|
content_encoding = headers.get("Content-Encoding", "")
|
||||||
logger.debug("Content-Encoding: %s", content_encoding)
|
logger.debug("Content-Encoding: %s", content_encoding)
|
||||||
|
|
||||||
if content_encoding in ["gzip", "deflate"]:
|
if content_encoding in ["gzip", "deflate"]:
|
||||||
@ -187,18 +187,18 @@ def get_decompressed_message() -> bytes:
|
|||||||
try:
|
try:
|
||||||
# Auto header checking.
|
# Auto header checking.
|
||||||
logger.debug("Trying zlib.decompress (15 + 32)...")
|
logger.debug("Trying zlib.decompress (15 + 32)...")
|
||||||
message_body = zlib.decompress(request.body.read(), 15 + 32)
|
message_body = zlib.decompress(input, 15 + 32)
|
||||||
|
|
||||||
except zlib.error:
|
except zlib.error:
|
||||||
logger.error("zlib.error, trying zlib.decompress (-15)")
|
logger.error("zlib.error, trying zlib.decompress (-15)")
|
||||||
# Negative wbits suppresses adler32 checksumming.
|
# Negative wbits suppresses adler32 checksumming.
|
||||||
message_body = zlib.decompress(request.body.read(), -15)
|
message_body = zlib.decompress(input, -15)
|
||||||
logger.debug("Resulting message_body:\n%s\n", message_body)
|
logger.debug("Resulting message_body:\n%s\n", message_body)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
logger.debug("Content-Encoding indicates *not* compressed...")
|
logger.debug("Content-Encoding indicates *not* compressed...")
|
||||||
|
|
||||||
message_body = request.body.read()
|
message_body = input
|
||||||
|
|
||||||
return message_body
|
return message_body
|
||||||
|
|
||||||
@ -314,7 +314,7 @@ def upload() -> str:
|
|||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
# Body may or may not be compressed.
|
# Body may or may not be compressed.
|
||||||
message_body = get_decompressed_message()
|
message_body = get_decompressed_message(request.headers, request.body.read())
|
||||||
|
|
||||||
except zlib.error as exc:
|
except zlib.error as exc:
|
||||||
# Some languages and libs do a crap job zlib compressing stuff. Provide
|
# Some languages and libs do a crap job zlib compressing stuff. Provide
|
||||||
|
Loading…
x
Reference in New Issue
Block a user