class Skr::Jobs::FreshBooks::Retrieve
Public Class Methods
from_request(req)
click to toggle source
# File lib/skr/jobs/fresh_books/retrieve.rb, line 38 def self.from_request(req) fb = ::FreshBooks::Client.new("#{req['domain']}.freshbooks.com", req['api_key']) errors = nil begin # make a test api call to validate authentication resp = fb.client.list(per_page: 1) errors = {access: resp['error']} if resp['error'] rescue SocketError errors = {network: 'Unable to resolve account'} end if errors return {success: false, data: {}, errors: errors} else job = self.perform_later(req['domain'], req['api_key']) return { success: true, message: 'Import Validation Started', data: { job: Lanes::Job.status_for_id(job.job_id) } } end end
Public Instance Methods
perform(account, token)
click to toggle source
# File lib/skr/jobs/fresh_books/retrieve.rb, line 31 def perform(account, token) process_each_type(account, token) do | output, index | save_progress(output, (index+1).to_f / STEPS.length) end self end
process_client(rec)
click to toggle source
# File lib/skr/jobs/fresh_books/retrieve.rb, line 7 def process_client(rec) rec.slice(*%w{ client_id organization first_name last_name}) end
process_invoice(rec)
click to toggle source
# File lib/skr/jobs/fresh_books/retrieve.rb, line 15 def process_invoice(rec) rec.slice(*%w{invoice_id client_id number amount po_number notes status}) end
process_project(rec)
click to toggle source
# File lib/skr/jobs/fresh_books/retrieve.rb, line 11 def process_project(rec) rec.slice(*%w{project_id name description}) end
process_staff(r)
click to toggle source
# File lib/skr/jobs/fresh_books/retrieve.rb, line 27 def process_staff(r) r.slice(*%w{staff_id username first_name last_name email}) end
process_time_entry(rec)
click to toggle source
# File lib/skr/jobs/fresh_books/retrieve.rb, line 19 def process_time_entry(rec) if rec['billed'] == '1' nil else rec.slice(*%w{ time_entry_id staff_id project_id hours date notes}) end end