From c85e9076bc1843df0a2aa2ac61c148593dc6f8dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Herv=C3=A9?= Date: Tue, 19 Jul 2022 11:45:40 +0200 Subject: [PATCH 1/3] Add support for zstd compression --- .generator/src/generator/templates/api_client.j2 | 3 +++ Gemfile | 1 + lib/datadog_api_client/v1/api_client.rb | 3 +++ lib/datadog_api_client/v2/api_client.rb | 3 +++ 4 files changed, 10 insertions(+) diff --git a/.generator/src/generator/templates/api_client.j2 b/.generator/src/generator/templates/api_client.j2 index 23c7c8c1cc28..5977add9807a 100644 --- a/.generator/src/generator/templates/api_client.j2 +++ b/.generator/src/generator/templates/api_client.j2 @@ -8,6 +8,7 @@ require 'logger' require 'tempfile' require 'time' require 'httparty' +require 'zstd-ruby' module {{ module_name }}::{{ version|upper }} class APIClient @@ -187,6 +188,8 @@ module {{ module_name }}::{{ version|upper }} gzip.close elsif header_params['Content-Encoding'] == 'deflate' data = Zlib::deflate(data) + elsif header_params['Content-Encoding'] == 'zstd1' + data = Zstd.compress(data) end data end diff --git a/Gemfile b/Gemfile index f68cfebd9883..6e0e06606ec5 100644 --- a/Gemfile +++ b/Gemfile @@ -17,6 +17,7 @@ group :development, :test do gem 'timecop' gem 'vcr' gem 'webmock' + gem 'zstd-ruby' end group :docs do diff --git a/lib/datadog_api_client/v1/api_client.rb b/lib/datadog_api_client/v1/api_client.rb index a64d4f39bb0e..fd5968d0e71a 100644 --- a/lib/datadog_api_client/v1/api_client.rb +++ b/lib/datadog_api_client/v1/api_client.rb @@ -19,6 +19,7 @@ require 'tempfile' require 'time' require 'httparty' +require 'zstd-ruby' module DatadogAPIClient::V1 class APIClient @@ -198,6 +199,8 @@ def build_request_body(header_params, form_params, body) gzip.close elsif header_params['Content-Encoding'] == 'deflate' data = Zlib::deflate(data) + elsif header_params['Content-Encoding'] == 'zstd1' + data = Zstd.compress(data) end data end diff --git a/lib/datadog_api_client/v2/api_client.rb b/lib/datadog_api_client/v2/api_client.rb index 5497e12193a6..1491c1dca954 100644 --- a/lib/datadog_api_client/v2/api_client.rb +++ b/lib/datadog_api_client/v2/api_client.rb @@ -19,6 +19,7 @@ require 'tempfile' require 'time' require 'httparty' +require 'zstd-ruby' module DatadogAPIClient::V2 class APIClient @@ -198,6 +199,8 @@ def build_request_body(header_params, form_params, body) gzip.close elsif header_params['Content-Encoding'] == 'deflate' data = Zlib::deflate(data) + elsif header_params['Content-Encoding'] == 'zstd1' + data = Zstd.compress(data) end data end From edc1f97be0777d163fad4bbd1f53b7435710799d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Herv=C3=A9?= Date: Tue, 19 Jul 2022 13:40:18 +0200 Subject: [PATCH 2/3] Try FFI version --- .generator/src/generator/templates/api_client.j2 | 4 ++-- Gemfile | 2 +- lib/datadog_api_client/v1/api_client.rb | 4 ++-- lib/datadog_api_client/v2/api_client.rb | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.generator/src/generator/templates/api_client.j2 b/.generator/src/generator/templates/api_client.j2 index 5977add9807a..bc6fce6099b4 100644 --- a/.generator/src/generator/templates/api_client.j2 +++ b/.generator/src/generator/templates/api_client.j2 @@ -8,7 +8,7 @@ require 'logger' require 'tempfile' require 'time' require 'httparty' -require 'zstd-ruby' +require 'zstandard' module {{ module_name }}::{{ version|upper }} class APIClient @@ -189,7 +189,7 @@ module {{ module_name }}::{{ version|upper }} elsif header_params['Content-Encoding'] == 'deflate' data = Zlib::deflate(data) elsif header_params['Content-Encoding'] == 'zstd1' - data = Zstd.compress(data) + data = Zstandard.deflate(data) end data end diff --git a/Gemfile b/Gemfile index 6e0e06606ec5..54169379f923 100644 --- a/Gemfile +++ b/Gemfile @@ -17,7 +17,7 @@ group :development, :test do gem 'timecop' gem 'vcr' gem 'webmock' - gem 'zstd-ruby' + gem 'zstandard' end group :docs do diff --git a/lib/datadog_api_client/v1/api_client.rb b/lib/datadog_api_client/v1/api_client.rb index fd5968d0e71a..bf77bb2ab5fd 100644 --- a/lib/datadog_api_client/v1/api_client.rb +++ b/lib/datadog_api_client/v1/api_client.rb @@ -19,7 +19,7 @@ require 'tempfile' require 'time' require 'httparty' -require 'zstd-ruby' +require 'zstandard' module DatadogAPIClient::V1 class APIClient @@ -200,7 +200,7 @@ def build_request_body(header_params, form_params, body) elsif header_params['Content-Encoding'] == 'deflate' data = Zlib::deflate(data) elsif header_params['Content-Encoding'] == 'zstd1' - data = Zstd.compress(data) + data = Zstandard.deflate(data) end data end diff --git a/lib/datadog_api_client/v2/api_client.rb b/lib/datadog_api_client/v2/api_client.rb index 1491c1dca954..e354c17fb358 100644 --- a/lib/datadog_api_client/v2/api_client.rb +++ b/lib/datadog_api_client/v2/api_client.rb @@ -19,7 +19,7 @@ require 'tempfile' require 'time' require 'httparty' -require 'zstd-ruby' +require 'zstandard' module DatadogAPIClient::V2 class APIClient @@ -200,7 +200,7 @@ def build_request_body(header_params, form_params, body) elsif header_params['Content-Encoding'] == 'deflate' data = Zlib::deflate(data) elsif header_params['Content-Encoding'] == 'zstd1' - data = Zstd.compress(data) + data = Zstandard.deflate(data) end data end From 16a8720a675fcaf237b170949e551992259e8f52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Herv=C3=A9?= Date: Tue, 19 Jul 2022 13:52:41 +0200 Subject: [PATCH 3/3] Catch LoadError --- .generator/src/generator/templates/api_client.j2 | 5 ++++- lib/datadog_api_client/v1/api_client.rb | 5 ++++- lib/datadog_api_client/v2/api_client.rb | 5 ++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/.generator/src/generator/templates/api_client.j2 b/.generator/src/generator/templates/api_client.j2 index bc6fce6099b4..6f27929cf484 100644 --- a/.generator/src/generator/templates/api_client.j2 +++ b/.generator/src/generator/templates/api_client.j2 @@ -8,7 +8,10 @@ require 'logger' require 'tempfile' require 'time' require 'httparty' -require 'zstandard' +begin + require 'zstandard' +rescue LoadError +end module {{ module_name }}::{{ version|upper }} class APIClient diff --git a/lib/datadog_api_client/v1/api_client.rb b/lib/datadog_api_client/v1/api_client.rb index bf77bb2ab5fd..c76db071d03a 100644 --- a/lib/datadog_api_client/v1/api_client.rb +++ b/lib/datadog_api_client/v1/api_client.rb @@ -19,7 +19,10 @@ require 'tempfile' require 'time' require 'httparty' -require 'zstandard' +begin + require 'zstandard' +rescue LoadError +end module DatadogAPIClient::V1 class APIClient diff --git a/lib/datadog_api_client/v2/api_client.rb b/lib/datadog_api_client/v2/api_client.rb index e354c17fb358..1804d619e769 100644 --- a/lib/datadog_api_client/v2/api_client.rb +++ b/lib/datadog_api_client/v2/api_client.rb @@ -19,7 +19,10 @@ require 'tempfile' require 'time' require 'httparty' -require 'zstandard' +begin + require 'zstandard' +rescue LoadError +end module DatadogAPIClient::V2 class APIClient