Class: Paypal::Report

Inherits:
Object
  • Object
show all
Defined in:
lib/paypal/report.rb

Constant Summary collapse

API_URL =
'https://payments-reports.paypal.com/reportingengine'

Instance Method Summary collapse

Constructor Details

#initialize(user, password, vendor, partner = 'PayPalUK') ⇒ Report

Returns a new instance of Report.



10
11
12
# File 'lib/paypal/report.rb', line 10

def initialize(user, password, vendor, partner = 'PayPalUK')
  @user, @password, @vendor, @partner = user, password, vendor, partner
end

Instance Method Details

#daily(time = Time.now, page_size = 50) ⇒ Object

high level functions



15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/paypal/report.rb', line 15

def daily(time = Time.now, page_size = 50)
  time      = time.strftime("%Y-%m-%d") unless time.is_a?(String)
  report_id = run_report_request('DailyActivityReport', {'report_date' => time}, page_size)

   = (report_id)

  data = []
  ["numberOfPages"].to_i.times do |page_num|
    data += get_data_request(report_id, page_num + 1) #it's zero indexed
  end
  data
end

#get_data_request(report_id, page_num) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/paypal/report.rb', line 60

def get_data_request(report_id, page_num)
  response = request 'getDataRequest' do |xml|
    xml.reportId report_id
    xml.pageNum page_num
  end

  [].tap do |result|
    response.elements.each("getDataResponse/reportDataRow") do |data_row|
      result << [].tap do |row|
        data_row.elements.each("columnData/data") do |data|
          row << if text = data.get_text
            text.value
          else
            nil
          end
        end
      end
    end
  end
end

#get_meta_data_request(report_id) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/paypal/report.rb', line 44

def (report_id)
  response = request 'getMetaDataRequest' do |xml|
    xml.reportId report_id
  end

  response.elements["getMetaDataResponse"].inject({}) do |h,e|
    if text = e.get_text
      h[e.name] = text.value
    else
      h[e.name] ||= []
      h[e.name] << e.elements["dataName"].get_text.value
    end
    h
  end
end

#run_report_request(report_name, report_params = {}, page_size = 50) ⇒ Object

low level functions



29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/paypal/report.rb', line 29

def run_report_request(report_name, report_params = {}, page_size = 50)
  response = request 'runReportRequest' do |xml|
    xml.reportName report_name
    report_params.each do |name, value|
      xml.reportParam do
        xml.paramName name
        xml.paramValue value
      end
    end
    xml.pageSize page_size
  end

  response.elements["runReportResponse/reportId"].get_text.value
end