Sha256: dc64a8ceb7d352c70921c3be3cbabb0c2eaf103450b787dac76b9ee2c453fee6

Contents?: true

Size: 518 Bytes

Versions: 1

Compression:

Stored size: 518 Bytes

Contents

module Geocodable
  class Request
    class JSONParser < Faraday::Response::Middleware
      def on_complete(env)
        begin
          env.body = JSON.parse(env.body, symbolize_names: true) if is_json?(env)
        rescue JSON::ParserError
          raise APIError.new(
            "Invalid response object from API: #{env.body}", env.status, env.body)
        end
      end

      private

      def is_json?(env)
        env[:response_headers]['Content-Type'].match 'application/json'
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
geocodable-0.0.1 lib/geocodable/json_parser.rb