class Skr::Jobs::FreshBooks::Base

Constants

STEPS

Attributes

fb[R]

Public Instance Methods

fetch_each(reqtype) click to toggle source
# File lib/skr/jobs/fresh_books/base.rb, line 21
def fetch_each(reqtype)
    Enumerator.new { | enum |
        page = last_page = 1
        while page <= last_page
            resp = fb.__send__(reqtype).list(per_page: 25, page: page)
            data = resp_data_for_req_type(reqtype, resp)
            last_page = data['pages'].to_i
            page += 1
            Array.wrap(data[reqtype]).each{|record|
                enum.yield record
            }
        end
    }
end
process_each_type(account, token) { |output, index| ... } click to toggle source
# File lib/skr/jobs/fresh_books/base.rb, line 37
def process_each_type(account, token)
    @fb = ::FreshBooks::Client.new("#{account}.freshbooks.com", token)
    output = {}
    @ignored_ids ||= {}
    STEPS.each_with_index do | step, index |
        type = step.singularize
        output[step] = fetch_each( type ).map { | record |
            send("process_#{type}", record)
        }.reject(&:nil?)
        yield output, index
    end
    output
end
resp_data_for_req_type(type, resp) click to toggle source
# File lib/skr/jobs/fresh_books/base.rb, line 11
def resp_data_for_req_type(type, resp)
    if type == 'staff'
        data = resp['staff_members']
        data[type]=data.delete('member')
        data
    else
        resp[type.pluralize]
    end
end