From f633f7bdd3d6567d8c418077a66a85afbe7e9d54 Mon Sep 17 00:00:00 2001 From: Michael Nikitochkin Date: Tue, 10 May 2022 19:01:02 +0200 Subject: [PATCH] Allow to use symbol plus in query Currently the query with complex ariphmetics are not correctly encoded. Example: ``` "sum:Foo.as_count() + sum:Foo.bar.as_count()" # => "sum:Foo.as_count()%20+%20sum:Foo.bar.as_count()" ``` The symbol `+` was not encoded. Datadog API treat `+` as concatination symbol and convert query to ``` "sum:Foo.as_count() sum:Foo.bar.as_count()" ``` and responses with error message. Replace `URI.encode` with `URI.encode_path_segment` --- src/dogapi/common.cr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dogapi/common.cr b/src/dogapi/common.cr index c3890ed..4085763 100755 --- a/src/dogapi/common.cr +++ b/src/dogapi/common.cr @@ -71,7 +71,7 @@ module Dogapi application_key: @application_key ? with_app_key : nil, } params = extra_params.merge params unless extra_params.nil? - qs_params = params.map { |k, v| URI.encode(k.to_s) + '=' + URI.encode(v.to_s) } + qs_params = params.map { |k, v| URI.encode_path_segment(k.to_s) + '=' + URI.encode_path_segment(v.to_s) } qs = '?' + qs_params.join('&') qs end