Skip to content

Commit c0ba19a

Browse files
authored
Add support for zstd1 Content-Encoding (#946)
1 parent 289ff17 commit c0ba19a

File tree

3 files changed

+13
-4
lines changed

3 files changed

+13
-4
lines changed

.generator/src/generator/templates/rest.j2

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import re
66
import ssl
77
from urllib.parse import urlencode
88
import zlib
9+
import zstandard as zstd
910

1011
import urllib3 # type: ignore
1112

@@ -134,10 +135,13 @@ class RESTClientObject:
134135
if body is not None:
135136
request_body = json.dumps(body)
136137
if headers.get("Content-Encoding") == "gzip":
137-
compress = zlib.compressobj(wbits=16 + zlib.MAX_WBITS)
138-
request_body = compress.compress(request_body.encode("utf-8")) + compress.flush()
138+
compressor = zlib.compressobj(wbits=16 + zlib.MAX_WBITS)
139+
request_body = compressor.compress(request_body.encode("utf-8")) + compress.flush()
139140
elif headers.get("Content-Encoding") == "deflate":
140141
request_body = zlib.compress(request_body.encode("utf-8"))
142+
elif headers.get("Content-Encoding") == "zstd1":
143+
compressor = zstd.ZstdCompressor()
144+
request_body = compressor.compress(request_body.encode("utf-8"))
141145
r = self.pool_manager.request(
142146
method,
143147
url,

setup.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ install_requires =
4242
urllib3>=1.15
4343
certifi
4444
python-dateutil
45+
zstandard
4546
setup_requires =
4647
setuptools>=30.3.0
4748
setuptools_scm

src/datadog_api_client/rest.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import ssl
99
from urllib.parse import urlencode
1010
import zlib
11+
import zstandard as zstd
1112

1213
import urllib3 # type: ignore
1314

@@ -136,10 +137,13 @@ def request(
136137
if body is not None:
137138
request_body = json.dumps(body)
138139
if headers.get("Content-Encoding") == "gzip":
139-
compress = zlib.compressobj(wbits=16 + zlib.MAX_WBITS)
140-
request_body = compress.compress(request_body.encode("utf-8")) + compress.flush()
140+
compressor = zlib.compressobj(wbits=16 + zlib.MAX_WBITS)
141+
request_body = compressor.compress(request_body.encode("utf-8")) + compress.flush()
141142
elif headers.get("Content-Encoding") == "deflate":
142143
request_body = zlib.compress(request_body.encode("utf-8"))
144+
elif headers.get("Content-Encoding") == "zstd1":
145+
compressor = zstd.ZstdCompressor()
146+
request_body = compressor.compress(request_body.encode("utf-8"))
143147
r = self.pool_manager.request(
144148
method,
145149
url,

0 commit comments

Comments
 (0)