class Sawyer::Response
Attributes
agent[R]
data[R]
headers[R]
rels[R]
status[R]
Public Class Methods
new(agent, res, options = {})
click to toggle source
Builds a Response after a completed request.
agent - The Sawyer::Agent that is managing the API connection. res - A Faraday::Response.
# File lib/sawyer/response.rb, line 13 def initialize(agent, res, options = {}) @agent = agent @status = res.status @headers = res.headers @env = res.env @data = @headers[:content_type] =~ /json|msgpack/ ? process_data(@agent.decode_body(res.body)) : res.body @rels = process_rels @started = options[:sawyer_started] @ended = options[:sawyer_ended] end
Public Instance Methods
inspect()
click to toggle source
# File lib/sawyer/response.rb, line 60 def inspect %Q(#<#{self.class}: #{@status} @rels=#{@rels.inspect} @data=#{@data.inspect}>) end
process_data(data)
click to toggle source
Turns parsed contents from an API response into a Resource or collection of Resources.
data - Either an Array or Hash parsed from JSON.
Returns either a Resource or Array of Resources.
# File lib/sawyer/response.rb, line 30 def process_data(data) case data when Hash then Resource.new(agent, data) when Array then data.map { |hash| process_data(hash) } when nil then nil else data end end
process_rels()
click to toggle source
Finds link relations from 'Link' response header
Returns an array of Relations
# File lib/sawyer/response.rb, line 42 def process_rels links = ( @headers["Link"] || "" ).split(', ').map do |link| href, name = link.match(/<(.*?)>; rel="(\w+)"/).captures [name.to_sym, Relation.from_link(@agent, name, :href => href)] end Hash[*links.flatten] end
time()
click to toggle source
# File lib/sawyer/response.rb, line 56 def time @ended end
timing()
click to toggle source
# File lib/sawyer/response.rb, line 52 def timing @timing ||= @ended - @started end