Sha256: 146e91d106f88b38b3b220b8b0f657fe381cb616a7ab956fd9ec6e4141ae8773
Contents?: true
Size: 1.53 KB
Versions: 1
Compression:
Stored size: 1.53 KB
Contents
module Sawyer class Response attr_reader :agent, :status, :headers, :data, :rels # Builds a Response after a completed request. # # agent - The Sawyer::Agent that is managing the API connection. # res - A Faraday::Response. def initialize(agent, res) @agent = agent @status = res.status @headers = res.headers @env = res.env @data = process_data(@agent.decode_body(res.body)) @rels = process_rels end # 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. 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 # Finds link relations from 'Link' response header # # Returns an array of Relations 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 def timing @timing ||= @env[:sawyer_ended] - @env[:sawyer_started] end def time @env[:sawyer_ended] end def inspect %(#<#{self.class}: #{@status} @rels=#{@rels.inspect} @data=#{@data.inspect}>) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
sawyer-0.0.8 | lib/sawyer/response.rb |