Sha256: 898b535f0a0f1b2c94285a6c1fb6f8a39e9a5374f60d8a85c86ae5195dec89dc
Contents?: true
Size: 1.13 KB
Versions: 5
Compression:
Stored size: 1.13 KB
Contents
require 'faraday_middleware/response_middleware' module FaradayMiddleware # Public: Parse response bodies as JSON. class ParseJson < ResponseMiddleware dependency 'json' define_parser { |body| JSON.parse body unless body.empty? } # Public: Override the content-type of the response with "application/json" # if the response body looks like it might be JSON, i.e. starts with an # open bracket. # # This is to fix responses from certain API providers that insist on serving # JSON with wrong MIME-types such as "text/javascript". class MimeTypeFix < ResponseMiddleware MIME_TYPE = 'application/json'.freeze def process_response(env) old_type = env[:response_headers][CONTENT_TYPE].to_s new_type = MIME_TYPE.dup new_type << ';' << old_type.split(';', 2).last if old_type.index(';') env[:response_headers][CONTENT_TYPE] = new_type end BRACKETS = %w- [ { - def parse_response?(env) super and BRACKETS.include? env[:body][0,1] end end end end # deprecated alias Faraday::Response::ParseJson = FaradayMiddleware::ParseJson
Version data entries
5 entries across 5 versions & 2 rubygems