twitter-status-bot/.gems/gems/twitter-5.11.0/lib/twitter/rest/response/parse_json.rb

32 lines
738 B
Ruby

require 'faraday'
require 'json'
module Twitter
module REST
module Response
class ParseJson < Faraday::Response::Middleware
WHITESPACE_REGEX = /\A^\s*$\z/
def parse(body)
case body
when WHITESPACE_REGEX, nil
nil
else
JSON.parse(body, :symbolize_names => true)
end
end
def on_complete(response)
response.body = parse(response.body) if respond_to?(:parse) && !unparsable_status_codes.include?(response.status)
end
def unparsable_status_codes
[204, 301, 302, 304]
end
end
end
end
end
Faraday::Response.register_middleware :parse_json => Twitter::REST::Response::ParseJson