Sha256: 1ea0b179d7d44ae9365325296bd6a04747f922e56164d482d29d54c15fea9cb6

Contents?: true

Size: 851 Bytes

Versions: 9

Compression:

Stored size: 851 Bytes

Contents

require 'multi_json'

module Esplanade
  class Response
    class Raw
      class Body
        def initialize(request, raw_response, raw_body)
          @request = request
          @raw_response = raw_response
          @raw_body = raw_body
        end

        def to_string
          @string ||= @raw_body.body rescue nil
          @string ||= @raw_body.first rescue nil
        end

        def to_hash
          @hash ||= MultiJson.load(to_string)
        rescue MultiJson::ParseError
          raise BodyIsNotJson, message
        end

        private

        def message
          {
            request: {
              method: @request.raw.method,
              path: @request.raw.path
            },
            status: @raw_response.status,
            body: @raw_response.body.to_string
          }
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
esplanade-1.4.0 lib/esplanade/response/raw/body.rb
esplanade-1.3.0 lib/esplanade/response/raw/body.rb
esplanade-1.2.1 lib/esplanade/response/raw/body.rb
esplanade-1.2.0 lib/esplanade/response/raw/body.rb
esplanade-1.1.2 lib/esplanade/response/raw/body.rb
esplanade-1.1.1 lib/esplanade/response/raw/body.rb
esplanade-1.1.0 lib/esplanade/response/raw/body.rb
esplanade-1.0.1 lib/esplanade/response/raw/body.rb
esplanade-1.0.0 lib/esplanade/response/raw/body.rb