Sha256: c43e9507b5958d828ec871d1e5a9d99190d29ab81f9a4e8041ca5cc194b59163
Contents?: true
Size: 903 Bytes
Versions: 3
Compression:
Stored size: 903 Bytes
Contents
module EBayEnterpriseAffiliateNetwork class APIResponse attr_reader :meta, :data, :request def initialize(response) @request = response.request body = JSON.parse(response.body) @meta = RecursiveOpenStruct.new(body["meta"]) @data = parse(body["data"]) end def all while meta.pagination.next uri = Addressable::URI.parse(meta.pagination.next.href) next_page_response = EBayEnterpriseAffiliateNetwork::Publisher.new.request(uri.origin + uri.path, uri.query_values) @meta = next_page_response.meta @data += next_page_response.data end @data end private def parse(raw_data) data = [] data = [raw_data] if raw_data.is_a?(Hash) # If we got exactly one result, put it in an array. raw_data.each { |item| data << RecursiveOpenStruct.new(item) } if raw_data data end end end
Version data entries
3 entries across 3 versions & 1 rubygems