diff --git a/lib/chatmeter/api.rb b/lib/chatmeter/api.rb index ad0c302..67b0788 100644 --- a/lib/chatmeter/api.rb +++ b/lib/chatmeter/api.rb @@ -92,7 +92,8 @@ def request(params, &block) if response.body && !response.body.empty? begin - response_body = MultiJson.load(response.body, symbolize_keys: true) + response_body_json = gunzip_response_body(response) + response_body = MultiJson.load(response_body_json, symbolize_keys: true) rescue if response.headers['Content-Type'] === 'application/json' raise @@ -105,5 +106,16 @@ def request(params, &block) @connection.reset response_body || "" end + + # Chatmeter has started to gzip some (but not all) response bodies. So, now we need to deal with that too. + def gunzip_response_body(response) + if response.headers['Content-Encoding'] == 'gzip' + sio = StringIO.new( response.body ) + gz = Zlib::GzipReader.new( sio ) + gz.read() + else + response.body + end + end end end diff --git a/lib/chatmeter/version.rb b/lib/chatmeter/version.rb index 9f7b177..e3cf588 100644 --- a/lib/chatmeter/version.rb +++ b/lib/chatmeter/version.rb @@ -1,3 +1,3 @@ module Chatmeter - VERSION = "1.3.5" + VERSION = "1.4.0-pre" end