Skip to content

Commit

Permalink
added reports
Browse files Browse the repository at this point in the history
  • Loading branch information
deanpcmad committed Apr 24, 2024
1 parent fd0b3cb commit e08cfc4
Show file tree
Hide file tree
Showing 8 changed files with 368 additions and 0 deletions.
19 changes: 19 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -369,6 +369,25 @@ Paddle::Notification.replay(id: "ntf_abc123")
Paddle::Notification.logs(id: "ntf_abc123")
```

### Reports

```ruby
# List all reports
Paddle::Report.list

# Retrieve a report
Paddle::Report.retrieve(id: "rpt_abc123")

# Get CSV download link for a report
# Returns a raw URL. This URL is not permanent and will expire.
# https://developer.paddle.com/api-reference/reports/get-report-csv
Paddle::Report.csv(id: "rpt_abc123")

# Create a Report
# https://developer.paddle.com/api-reference/reports/create-report
Paddle::Report.create type: "transactions", filters: [{name: "updated_at", operator: "lt", value: "2024-04
-30"}, {name: "updated_at", operator: "gte", value: "2024-04-01"}]
```

## Classic API

Expand Down
1 change: 1 addition & 0 deletions lib/paddle.rb
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ def self.config
autoload :Event, "paddle/models/event"
autoload :NotificationSetting, "paddle/models/notification_setting"
autoload :Notification, "paddle/models/notification"
autoload :Report, "paddle/models/report"

autoload :NotificationLog, "paddle/models/notification_log"
autoload :CreditBalance, "paddle/models/credit_balance"
Expand Down
32 changes: 32 additions & 0 deletions lib/paddle/models/report.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
module Paddle
class Report < Object

class << self

def list(**params)
response = Client.get_request("reports", params: params)
Collection.from_response(response, type: Report)
end

def create(type:, filters:, **params)
attrs = {type: type, filters: filters}
response = Client.post_request("reports", body: attrs.merge(params))
Report.new(response.body["data"])
end

def retrieve(id:)
response = Client.get_request("reports/#{id}")
Report.new(response.body["data"])
end

def csv(id:)
response = Client.get_request("reports/#{id}/download-url")
if response.success?
return response.body["data"]["url"]
end
end

end

end
end
40 changes: 40 additions & 0 deletions test/paddle/models/report_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
require "test_helper"

class ReportTest < Minitest::Test

def test_report_list
reports = Paddle::Report.list

assert_equal Paddle::Collection, reports.class
assert_equal Paddle::Report, reports.data.first.class
assert_equal "rep_01hw8a1mg788ffxetyzs77vk3n", reports.data.first.id
end

def test_report_retrieve
report = Paddle::Report.retrieve(id: "rep_01hw8a1mg788ffxetyzs77vk3n")

assert_equal Paddle::Report, report.class
assert_equal "rep_01hw8a1mg788ffxetyzs77vk3n", report.id
assert_equal "transactions", report.type
end

def test_report_csv
csv = Paddle::Report.csv(id: "rep_01hw8a1mg788ffxetyzs77vk3n")

assert_match (/sandbox-reports/), csv
end

def test_report_create
report = Paddle::Report.create(
type: "transactions",
filters: [
{name: "updated_at", operator: "lt", value: "2024-04-30"},
{name: "updated_at", operator: "gte", value: "2024-04-01"}
]
)

assert_equal Paddle::Report, report.class
assert_equal "transactions", report.type
end

end
69 changes: 69 additions & 0 deletions test/vcr_cassettes/test_report_create.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

69 changes: 69 additions & 0 deletions test/vcr_cassettes/test_report_csv.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

69 changes: 69 additions & 0 deletions test/vcr_cassettes/test_report_list.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

69 changes: 69 additions & 0 deletions test/vcr_cassettes/test_report_retrieve.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit e08cfc4

Please sign in to comment.