module NeonRAW::Clients::Base::Listings

Methods for building listings.

Constants

OBJECT_KINDS

Private Instance Methods

build_listing(path, params) click to toggle source

Creates the listing object. @!method build_listing(path, params) @param path [String] The API path for the listing. @param params [Hash] The parameters for the request. @return [NeonRAW::Objects::Listing] Returns the Listing object.

# File lib/NeonRAW/clients/base/listing.rb, line 30
def build_listing(path, params)
  data_arr = []
  until data_arr.length == params[:limit]
    data = request_data(path, :get, params)
    params[:after] = data[:data][:after]
    params[:before] = data[:data][:before]
    data[:data][:children].each do |item|
      data_arr << if item[:kind] == 't1' &&
                     item[:data].key?(:was_comment)
                    Objects::InboxComment.new(self, item[:data])
                  else
                    OBJECT_KINDS[item[:kind]].new(self, item[:data])
                  end
      break if data_arr.length == params[:limit]
    end
    break if params[:after].nil?
  end
  listing = OBJECT_KINDS['Listing'].new(params[:after], params[:before])
  data_arr.each { |submission| listing << submission }
  listing
end