Class: Paypal::Report
- Inherits:
-
Object
- Object
- Paypal::Report
- Defined in:
- lib/paypal/report.rb
Constant Summary collapse
- API_URL =
'https://payments-reports.paypal.com/reportingengine'
Instance Method Summary collapse
-
#daily(time = Date.today, page_size = 50) ⇒ Object
high level functions.
- #get_data_request(report_id, page_num) ⇒ Object
- #get_meta_data_request(report_id) ⇒ Object
-
#initialize(user, password, vendor, partner = 'PayPalUK') ⇒ Report
constructor
A new instance of Report.
- #monthly(start_date, end_date = Date.today, page_size = 50) ⇒ Object
-
#run_report_request(report_name, report_params = {}, page_size = 50) ⇒ Object
low level functions.
- #transaction_summary(start_date, end_date = Time.now, page_size = 50) ⇒ Object
Constructor Details
#initialize(user, password, vendor, partner = 'PayPalUK') ⇒ Report
Returns a new instance of Report.
11 12 13 |
# File 'lib/paypal/report.rb', line 11 def initialize(user, password, vendor, partner = 'PayPalUK') @user, @password, @vendor, @partner = user, password, vendor, partner end |
Instance Method Details
#daily(time = Date.today, page_size = 50) ⇒ Object
high level functions
16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/paypal/report.rb', line 16 def daily(time = Date.today, 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
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/paypal/report.rb', line 92 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
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/paypal/report.rb', line 76 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 |
#monthly(start_date, end_date = Date.today, page_size = 50) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/paypal/report.rb', line 29 def monthly(start_date, end_date = Date.today, page_size = 50) start_date = Date.parse(start_date) if start_date.is_a?(String) start_date = start_date.to_date if start_date.is_a?(Time) end_date = Date.parse(end_date) if end_date.is_a?(String) end_date = end_date.to_date if end_date.is_a?(Time) data = [] while(start_date <= end_date) puts start_date.strftime("%Y-%m-%d") data += daily(start_date, page_size) start_date = start_date.next_day end data end |
#run_report_request(report_name, report_params = {}, page_size = 50) ⇒ Object
low level functions
61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/paypal/report.rb', line 61 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 |
#transaction_summary(start_date, end_date = Time.now, page_size = 50) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/paypal/report.rb', line 45 def transaction_summary(start_date, end_date = Time.now, page_size = 50) start_date = start_date.strftime("%Y-%m-%d 00:00:00") unless start_date.is_a?(String) end_date = end_date.strftime("%Y-%m-%d 23:59:59") unless end_date.is_a?(String) report_id = run_report_request('TransactionSummaryReport', {'start_date' => start_date, 'end_date' => end_date}, 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 |