class FaradayMiddleware::Jsons::Decoder
Public Class Methods
new(app, options = {})
click to toggle source
Calls superclass method
# File lib/faraday_middleware/jsons/response/decoder.rb, line 3 def initialize(app, options = {}) super(app) @raise_error = options[:raise_error] || false @symbolize_keys = options[:symbolize_keys] || false @content_type = options[:content_type] || %r!^application/(.*\+)?json! end
Public Instance Methods
call(env)
click to toggle source
# File lib/faraday_middleware/jsons/response/decoder.rb, line 11 def call(env) @app.call(env).on_complete do |env| if has_body?(env) && match_content_type?(env) env[:body] = parse(env[:body]) end end end
parse(body)
click to toggle source
# File lib/faraday_middleware/jsons/response/decoder.rb, line 19 def parse(body) begin ::MultiJson.load(body, symbolize_keys: @symbolize_keys) rescue => e raise e if @raise_error body end end
Protected Instance Methods
has_body?(env)
click to toggle source
# File lib/faraday_middleware/jsons/response/decoder.rb, line 34 def has_body?(env) (body = env[:body]) && !body.empty? end
match_content_type?(env)
click to toggle source
# File lib/faraday_middleware/jsons/response/decoder.rb, line 29 def match_content_type?(env) content_type = env[:response_headers]["Content-Type"] @content_type === content_type end