Sha256: 6987958b35629ebce35326f2e4b17a827f0f9cc8f3d5807c9a6ed0a3423a18fb
Contents?: true
Size: 1.54 KB
Versions: 22
Compression:
Stored size: 1.54 KB
Contents
require 'faraday' require 'msgpack' module Ably module Rest module Middleware class ParseMessagePack < Faraday::Response::Middleware def on_complete(env) if env.response_headers['Content-Type'] == 'application/x-msgpack' env.body = parse(env.body) unless env.response_headers['Ably-Middleware-Parsed'] == true env.response_headers['Ably-Middleware-Parsed'] = true end rescue Ably::Exceptions::InvalidResponseBody => e debug_info = { method: env.method, url: env.url, base64_body: base64_body(env.body), response_headers: env.response_headers } raise Ably::Exceptions::InvalidResponseBody, "#{e.message}\nRequest env: #{debug_info}" end def parse(body) if body.length > 0 MessagePack.unpack(body) else body end rescue MessagePack::UnknownExtTypeError => e raise Ably::Exceptions::InvalidResponseBody, "MessagePack::UnknownExtTypeError body could not be decoded: #{e.message}. Got Base64:\n#{base64_body(body)}" rescue MessagePack::MalformedFormatError => e raise Ably::Exceptions::InvalidResponseBody, "MessagePack::MalformedFormatError body could not be decoded: #{e.message}. Got Base64:\n#{base64_body(body)}" end def base64_body(body) Base64.encode64(body) rescue => err "[#{err.message}! Could not base64 encode body: '#{body}']" end end end end end
Version data entries
22 entries across 22 versions & 2 rubygems