Class: HasOffers::AffiliateBilling

Inherits:
Base
  • Object
show all
Defined in:
lib/hasoffers/affiliate_billing.rb

Constant Summary collapse

Target =
'AffiliateBilling'

Class Method Summary collapse

Methods inherited from Base

api_mode, api_mode=, base_uri, base_uri=, get_request, initialize_credentials, live?, post_request, requires!, test?

Class Method Details

.create_invoice(data, return_object = false) ⇒ Object



44
45
46
47
48
# File 'lib/hasoffers/affiliate_billing.rb', line 44

def create_invoice(data, return_object = false)
  requires!(data, %w[affiliate_id start_date end_date status])
  params = build_data(data, return_object)
  post_request(Target, 'createInvoice', params)
end

.find_all_invoices(params) ⇒ Object



25
26
27
28
29
30
31
32
# File 'lib/hasoffers/affiliate_billing.rb', line 25

def find_all_invoices(params)
  response = get_request(Target, 'findAllInvoices', params)
  if response.success?
    # strip out the clutter
    response.set_data simplify_response_data(response.data)
  end
  response
end

.find_all_invoices_by_ids(ids, params = {}) ⇒ Object



34
35
36
37
38
39
40
41
42
# File 'lib/hasoffers/affiliate_billing.rb', line 34

def find_all_invoices_by_ids(ids, params = {})
  params['ids'] = ids
  response = get_request(Target, 'findAllInvoicesByIds', params)
  if response.success?
    # strip out the clutter
    response.set_data simplify_response_data(response.data)
  end
  response
end

.find_invoice_stats(params) ⇒ Object



9
10
11
12
# File 'lib/hasoffers/affiliate_billing.rb', line 9

def find_invoice_stats(params)
  requires!(params, %w[affiliate_id end_date])
  get_request(Target, 'findInvoiceStats', params)
end

.simplify_response_data(data) ⇒ Object



14
15
16
17
18
19
20
21
22
23
# File 'lib/hasoffers/affiliate_billing.rb', line 14

def simplify_response_data data
  # Data is returned as a hash like this:
  # {
  #   "1" => {"AffiliateInvoice" => {<what we really want>}, ... },
  #   "2" => {"AffiliateInvoice" => {<what we really want>}, ... }
  # }
  #
  # This function will extract it out.
  data.map { |id, invoice_data| invoice_data["AffiliateInvoice"] }
end

.update_invoice(id, data, return_object = false) ⇒ Object



50
51
52
53
54
# File 'lib/hasoffers/affiliate_billing.rb', line 50

def update_invoice(id, data, return_object = false)
  params = build_data(data, return_object)
  params['id'] = id
  post_request(Target, 'updateInvoice', params)
end