charger 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +33 -13
- data/lib/charger.rb +42 -14
- data/lib/charger/client.rb +3 -3
- data/lib/charger/component.rb +1 -6
- data/lib/charger/configuration.rb +17 -0
- data/lib/charger/credit_card.rb +1 -4
- data/lib/charger/customer.rb +1 -4
- data/lib/charger/event.rb +77 -0
- data/lib/charger/line_item.rb +2 -6
- data/lib/charger/product.rb +5 -5
- data/lib/charger/product_family.rb +4 -4
- data/lib/charger/request.rb +17 -0
- data/lib/charger/resource.rb +13 -0
- data/lib/charger/statement.rb +56 -0
- data/lib/charger/subscription.rb +48 -8
- data/lib/charger/transaction.rb +93 -0
- data/lib/charger/version.rb +1 -1
- metadata +9 -8
data/README.md
CHANGED
@@ -1,24 +1,44 @@
|
|
1
1
|
# Charger
|
2
2
|
|
3
|
-
|
3
|
+
A different gem to interact with Chargify's API.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
And then execute:
|
12
|
-
|
13
|
-
$ bundle
|
14
|
-
|
15
|
-
Or install it yourself as:
|
16
|
-
|
17
|
-
$ gem install charger
|
7
|
+
```rb
|
8
|
+
gem 'charger'
|
9
|
+
```
|
18
10
|
|
19
11
|
## Usage
|
20
12
|
|
21
|
-
|
13
|
+
If you are using Rails, you could do the following
|
14
|
+
|
15
|
+
```rb
|
16
|
+
# config/initializers/charger.rb
|
17
|
+
Charger.configure do |config|
|
18
|
+
config.site = {
|
19
|
+
subdomain: ENV['CHARGIFY_URL'],
|
20
|
+
api_key: ENV['CHARGIFY_TOKEN']
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
# Some other file
|
25
|
+
mrr = 0.0
|
26
|
+
at_risk_mrr = 0.0
|
27
|
+
|
28
|
+
Charger::Subscription.all.each do |subscription|
|
29
|
+
if subscription.live?
|
30
|
+
mrr += subscription.mrr
|
31
|
+
end
|
32
|
+
if subscription.problem?
|
33
|
+
at_risk_mrr += subscription.mrr
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
puts "MRR: #{mrr}"
|
38
|
+
puts "At Risk MRR: #{at_risk_mrr}"
|
39
|
+
```
|
40
|
+
|
41
|
+
For more information on what is available, you'll need to check the source code.
|
22
42
|
|
23
43
|
## Contributing
|
24
44
|
|
data/lib/charger.rb
CHANGED
@@ -1,31 +1,59 @@
|
|
1
|
-
require "charger/version"
|
2
|
-
|
3
1
|
module Charger
|
4
2
|
class << self
|
5
|
-
#
|
6
|
-
@@
|
3
|
+
# The hash of configurations
|
4
|
+
@@configurations = {}
|
7
5
|
|
8
|
-
# The
|
9
|
-
@@
|
6
|
+
# The current client
|
7
|
+
@@current = nil
|
10
8
|
|
11
9
|
def configure
|
12
10
|
yield self
|
13
11
|
end
|
14
12
|
end
|
15
13
|
|
16
|
-
|
17
|
-
|
14
|
+
# Add a configuration to Charger
|
15
|
+
#
|
16
|
+
# @param [Hash] params
|
17
|
+
# @return [void]
|
18
|
+
def self.site= params={}
|
19
|
+
return unless params[:subdomain] || params[:api_key]
|
20
|
+
config = Configuration.new(params)
|
21
|
+
@@configurations[config.subdomain] = config
|
22
|
+
@@current = config
|
23
|
+
end
|
24
|
+
|
25
|
+
# Switches between configurations. Useful if you want to connect to multiple
|
26
|
+
# chargify accounts at once.
|
27
|
+
#
|
28
|
+
# @return [Boolean]
|
29
|
+
def self.switch subdomain
|
30
|
+
@@current = @@configurations[subdomain]
|
31
|
+
true
|
32
|
+
rescue
|
33
|
+
false
|
18
34
|
end
|
19
35
|
|
20
|
-
|
21
|
-
|
36
|
+
# Clears all configurations
|
37
|
+
#
|
38
|
+
# @return [void]
|
39
|
+
def self.clear
|
40
|
+
@@configurations = Hash.new
|
41
|
+
@@current = nil
|
22
42
|
end
|
23
43
|
|
24
|
-
|
25
|
-
|
44
|
+
# @return [Charger::Client]
|
45
|
+
def self.client
|
46
|
+
@@current.client
|
47
|
+
rescue
|
48
|
+
nil
|
26
49
|
end
|
27
50
|
|
28
|
-
def self.
|
29
|
-
@@
|
51
|
+
def self.configurations
|
52
|
+
@@configurations
|
30
53
|
end
|
54
|
+
|
55
|
+
def self.current
|
56
|
+
@@current
|
57
|
+
end
|
58
|
+
|
31
59
|
end
|
data/lib/charger/client.rb
CHANGED
@@ -3,9 +3,9 @@ module Charger
|
|
3
3
|
class Client
|
4
4
|
attr_accessor :api_key, :subdomain
|
5
5
|
|
6
|
-
def initialize
|
7
|
-
@api_key =
|
8
|
-
@subdomain =
|
6
|
+
def initialize api_key, subdomain
|
7
|
+
@api_key = api_key
|
8
|
+
@subdomain = subdomain
|
9
9
|
end
|
10
10
|
|
11
11
|
def get resource, headers={}
|
data/lib/charger/component.rb
CHANGED
@@ -1,10 +1,7 @@
|
|
1
1
|
module Charger
|
2
2
|
|
3
3
|
class Component
|
4
|
-
include
|
5
|
-
extend ActiveModel::Naming
|
6
|
-
include ActiveModel::Conversion
|
7
|
-
include ActiveModel::Validations
|
4
|
+
include Resource
|
8
5
|
|
9
6
|
attribute :id, Integer
|
10
7
|
attribute :name, String
|
@@ -43,7 +40,6 @@ module Charger
|
|
43
40
|
end
|
44
41
|
|
45
42
|
def self.find_by_product_family_id id
|
46
|
-
client = Client.new
|
47
43
|
components = []
|
48
44
|
|
49
45
|
client.get("product_families/#{id}/components").each do |data|
|
@@ -61,7 +57,6 @@ module Charger
|
|
61
57
|
end
|
62
58
|
|
63
59
|
def self.find product_family_id, id
|
64
|
-
client = Client.new
|
65
60
|
new(client.get("product_families/#{product_family_id}/components/#{id}")['component'])
|
66
61
|
end
|
67
62
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Charger
|
2
|
+
|
3
|
+
class Configuration
|
4
|
+
include Virtus
|
5
|
+
|
6
|
+
attribute :api_key, String
|
7
|
+
attribute :subdomain, String
|
8
|
+
|
9
|
+
# Retrieves this Configuration's client
|
10
|
+
#
|
11
|
+
# @return [Charger::Client]
|
12
|
+
def client
|
13
|
+
Client.new(api_key, subdomain)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
data/lib/charger/credit_card.rb
CHANGED
@@ -1,10 +1,7 @@
|
|
1
1
|
module Charger
|
2
2
|
|
3
3
|
class CreditCard
|
4
|
-
include
|
5
|
-
extend ActiveModel::Naming
|
6
|
-
include ActiveModel::Conversion
|
7
|
-
include ActiveModel::Validations
|
4
|
+
include Resource
|
8
5
|
|
9
6
|
VAULTS = %w{cancellation_message trust_commerce payment_express beanstream braintree1}
|
10
7
|
|
data/lib/charger/customer.rb
CHANGED
@@ -0,0 +1,77 @@
|
|
1
|
+
module Charger
|
2
|
+
|
3
|
+
class Event
|
4
|
+
include Resource
|
5
|
+
|
6
|
+
attribute :id, Integer
|
7
|
+
attribute :key, String
|
8
|
+
attribute :message, String
|
9
|
+
attribute :subscription_id, Integer
|
10
|
+
attribute :event_specific_data, Hash
|
11
|
+
attribute :created_at, DateTime
|
12
|
+
|
13
|
+
def subscription force=false
|
14
|
+
@subscription = nil if force
|
15
|
+
@subscription ||= Subscription.find(subscription_id)
|
16
|
+
end
|
17
|
+
|
18
|
+
def subscription= val
|
19
|
+
@subscription = val
|
20
|
+
end
|
21
|
+
|
22
|
+
# Grabs ALL of the events. Note this is a LONG running task especially if
|
23
|
+
# your account has a lot of events. You can shorten it up by passing in some
|
24
|
+
# optional parameters.
|
25
|
+
#
|
26
|
+
# Parameters Available:
|
27
|
+
# * per_page
|
28
|
+
# * since_id
|
29
|
+
# * max_id
|
30
|
+
# * direction - default is `desc`
|
31
|
+
#
|
32
|
+
# @param [Hash] params
|
33
|
+
# @return [Array<Event>]
|
34
|
+
def self.all params={}
|
35
|
+
params = { per_page: 200, direction: 'desc' }.merge(params)
|
36
|
+
events = []
|
37
|
+
num = 1
|
38
|
+
loop do
|
39
|
+
params[:page] = num
|
40
|
+
response = page(params)
|
41
|
+
break if response.empty?
|
42
|
+
num += 1
|
43
|
+
events += response
|
44
|
+
puts num
|
45
|
+
end
|
46
|
+
events
|
47
|
+
end
|
48
|
+
|
49
|
+
# Gets a single page of events
|
50
|
+
# Parameters available:
|
51
|
+
# * page
|
52
|
+
# * per_page
|
53
|
+
# * since_id
|
54
|
+
# * max_id
|
55
|
+
# * direction - `asc` and `desc` are valid
|
56
|
+
# @param [Hash] params
|
57
|
+
def self.page params={}
|
58
|
+
params = { page: 1, per_page: 25, direction: 'desc' }.merge(params)
|
59
|
+
events = []
|
60
|
+
client.get('events', params: params).each do |data|
|
61
|
+
events << new(data['event'])
|
62
|
+
end
|
63
|
+
events
|
64
|
+
end
|
65
|
+
|
66
|
+
def self.find_by_subscription_id sub, params={}
|
67
|
+
params = { per_page: 200, direction: 'desc' }.merge(params)
|
68
|
+
events = []
|
69
|
+
client.get("subscriptions/#{sub}/events", params).each do |data|
|
70
|
+
events << new(data['event'])
|
71
|
+
end
|
72
|
+
events
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
data/lib/charger/line_item.rb
CHANGED
@@ -1,10 +1,7 @@
|
|
1
1
|
module Charger
|
2
2
|
|
3
3
|
class LineItem
|
4
|
-
include
|
5
|
-
extend ActiveModel::Naming
|
6
|
-
include ActiveModel::Conversion
|
7
|
-
include ActiveModel::Validations
|
4
|
+
include Resource
|
8
5
|
|
9
6
|
attribute :subscription_id, Integer
|
10
7
|
attribute :component_id, Integer
|
@@ -12,10 +9,9 @@ module Charger
|
|
12
9
|
attribute :unit_name, String
|
13
10
|
attribute :kind, String
|
14
11
|
|
15
|
-
# @param [Integer] the id of the subscription
|
12
|
+
# @param [Integer] id the id of the subscription
|
16
13
|
# @return [Array<LineItem>]
|
17
14
|
def self.find_by_subscription_id id
|
18
|
-
client = Client.new
|
19
15
|
items = []
|
20
16
|
|
21
17
|
client.get("subscriptions/#{id}/components").each do |data|
|
data/lib/charger/product.rb
CHANGED
@@ -1,10 +1,7 @@
|
|
1
1
|
module Charger
|
2
2
|
|
3
3
|
class Product
|
4
|
-
include
|
5
|
-
extend ActiveModel::Naming
|
6
|
-
include ActiveModel::Conversion
|
7
|
-
include ActiveModel::Validations
|
4
|
+
include Resource
|
8
5
|
|
9
6
|
attribute :id, Integer
|
10
7
|
attribute :price_in_cents, Integer
|
@@ -30,7 +27,6 @@ module Charger
|
|
30
27
|
attribute :archived_at, DateTime
|
31
28
|
|
32
29
|
def self.find_by_product_family_id id
|
33
|
-
client = Client.new
|
34
30
|
products = []
|
35
31
|
client.get("product_families/#{id}/products") do |data|
|
36
32
|
products << new(data['product'])
|
@@ -41,6 +37,10 @@ module Charger
|
|
41
37
|
def persisted?
|
42
38
|
!!id
|
43
39
|
end
|
40
|
+
|
41
|
+
def self.client
|
42
|
+
Charger.client
|
43
|
+
end
|
44
44
|
end
|
45
45
|
|
46
46
|
end
|
@@ -1,10 +1,7 @@
|
|
1
1
|
module Charger
|
2
2
|
|
3
3
|
class ProductFamily
|
4
|
-
include
|
5
|
-
extend ActiveModel::Naming
|
6
|
-
include ActiveModel::Conversion
|
7
|
-
include ActiveModel::Validations
|
4
|
+
include Resource
|
8
5
|
|
9
6
|
attribute :id, Integer
|
10
7
|
attribute :name, String
|
@@ -12,6 +9,9 @@ module Charger
|
|
12
9
|
attribute :accounting_code, String
|
13
10
|
attribute :description, String
|
14
11
|
|
12
|
+
validates :name, presence: true
|
13
|
+
validates :handle, presence: true
|
14
|
+
|
15
15
|
# @param [Boolean] force will cause this to un-cache the results
|
16
16
|
def products force=false
|
17
17
|
@products = nil if force
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module Charger
|
2
|
+
class Statement
|
3
|
+
include Resource
|
4
|
+
|
5
|
+
attribute :id, Integer
|
6
|
+
attribute :subscription_id, Integer
|
7
|
+
attribute :opened_at, DateTime
|
8
|
+
attribute :closed_at, DateTime
|
9
|
+
attribute :settled_at, DateTime
|
10
|
+
attribute :text_view, String
|
11
|
+
attribute :basic_html_view, String
|
12
|
+
attribute :html_view, String
|
13
|
+
attribute :future_payments, String
|
14
|
+
attribute :starting_balance_in_cents, Integer
|
15
|
+
attribute :ending_balance_in_cents, Integer
|
16
|
+
attribute :customer_first_name, String
|
17
|
+
attribute :customer_last_name, String
|
18
|
+
attribute :customer_organization, String
|
19
|
+
attribute :customer_shipping_address, String
|
20
|
+
attribute :customer_shipping_address_2, String
|
21
|
+
attribute :customer_shipping_city, String
|
22
|
+
attribute :customer_shipping_state, String
|
23
|
+
attribute :customer_shipping_country, String
|
24
|
+
attribute :customer_shipping_zip, String
|
25
|
+
attribute :customer_billing_address, String
|
26
|
+
attribute :customer_billing_address_2, String
|
27
|
+
attribute :customer_billing_city, String
|
28
|
+
attribute :customer_billing_state, String
|
29
|
+
attribute :customer_billing_country, String
|
30
|
+
attribute :customer_billing_zip, String
|
31
|
+
attribute :transactions, Array[Transaction]
|
32
|
+
attribute :events, Array[Event]
|
33
|
+
attribute :created_at, DateTime
|
34
|
+
attribute :updated_at, DateTime
|
35
|
+
|
36
|
+
def subscription
|
37
|
+
@subscription ||= Subscription.find(subscription_id)
|
38
|
+
end
|
39
|
+
|
40
|
+
def subscription= sub
|
41
|
+
@subscription = sub
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.find id
|
45
|
+
new(client.get("statements/#{id}")['statement'])
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.find_by_subscription_id id
|
49
|
+
statements = []
|
50
|
+
client.get("subscriptions/#{id}/statements").each do |data|
|
51
|
+
statements << new(data['statement'])
|
52
|
+
end
|
53
|
+
statements
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
data/lib/charger/subscription.rb
CHANGED
@@ -1,10 +1,7 @@
|
|
1
1
|
module Charger
|
2
2
|
|
3
3
|
class Subscription
|
4
|
-
include
|
5
|
-
extend ActiveModel::Naming
|
6
|
-
include ActiveModel::Conversion
|
7
|
-
include ActiveModel::Validations
|
4
|
+
include Resource
|
8
5
|
|
9
6
|
STATES = %w{trialing trial_ended assessing active soft_failure past_due suspended canceled unpaid expired}
|
10
7
|
|
@@ -15,7 +12,6 @@ module Charger
|
|
15
12
|
attribute :current_period_ends_at, DateTime
|
16
13
|
attribute :next_assessment_at, DateTime
|
17
14
|
attribute :trial_started_at, DateTime
|
18
|
-
attribute :trial_started_at, DateTime
|
19
15
|
attribute :trial_ended_at, DateTime
|
20
16
|
attribute :activated_at, DateTime
|
21
17
|
attribute :expires_at, DateTime
|
@@ -43,7 +39,6 @@ module Charger
|
|
43
39
|
# not found.
|
44
40
|
# @return [Subscription]
|
45
41
|
def self.find id
|
46
|
-
client = Client.new
|
47
42
|
new(client.get("subscriptions/#{id}")['subscription'])
|
48
43
|
end
|
49
44
|
|
@@ -52,7 +47,6 @@ module Charger
|
|
52
47
|
#
|
53
48
|
# @return [Array<Subscription>]
|
54
49
|
def self.all
|
55
|
-
client = Client.new
|
56
50
|
subscriptions = []
|
57
51
|
|
58
52
|
num = 1
|
@@ -72,7 +66,6 @@ module Charger
|
|
72
66
|
# @param [Integer] limit max is 200 and default is 20
|
73
67
|
# @return [Array<Subscription>]
|
74
68
|
def self.page num=1, limit=20
|
75
|
-
client = Client.new
|
76
69
|
subscriptions = []
|
77
70
|
client.get("subscriptions", params: {page: num, per_page: limit}).each do |data|
|
78
71
|
subscriptions << new(data['subscription'])
|
@@ -137,6 +130,26 @@ module Charger
|
|
137
130
|
!!id
|
138
131
|
end
|
139
132
|
|
133
|
+
def activated_on? date
|
134
|
+
return false unless activated?
|
135
|
+
activated_between?(date.beginning_of_day, date.end_of_day)
|
136
|
+
end
|
137
|
+
|
138
|
+
def activated_between? a, b
|
139
|
+
return false unless activated?
|
140
|
+
activated_at > a && activated_at < b
|
141
|
+
end
|
142
|
+
|
143
|
+
def canceled_on? date
|
144
|
+
return false unless canceled?
|
145
|
+
canceled_between?(date.beginning_of_day, date.end_of_day)
|
146
|
+
end
|
147
|
+
|
148
|
+
def canceled_between? a, b
|
149
|
+
return false unless canceled?
|
150
|
+
canceled_at > a && canceled_at < b
|
151
|
+
end
|
152
|
+
|
140
153
|
def total
|
141
154
|
sum = product.price_in_cents.to_f / 100.0
|
142
155
|
line_items.each do |item|
|
@@ -153,6 +166,15 @@ module Charger
|
|
153
166
|
end
|
154
167
|
end
|
155
168
|
|
169
|
+
def events force=false
|
170
|
+
@events = nil if force
|
171
|
+
@events ||= Event.find_by_subscription_id(id)
|
172
|
+
@events.each do |event|
|
173
|
+
event.subscription = self
|
174
|
+
end
|
175
|
+
@events
|
176
|
+
end
|
177
|
+
|
156
178
|
# @param [Boolean] force will cause this to un-cache the results
|
157
179
|
def line_items force=false
|
158
180
|
@line_items = nil if force
|
@@ -162,6 +184,24 @@ module Charger
|
|
162
184
|
end
|
163
185
|
@line_items
|
164
186
|
end
|
187
|
+
|
188
|
+
def transactions force=false
|
189
|
+
@transactions = nil if force
|
190
|
+
@transactions ||= Transaction.find_by_subscription_id(id)
|
191
|
+
@transactions.each do |transaction|
|
192
|
+
transaction.subscription = self
|
193
|
+
end
|
194
|
+
@transactions
|
195
|
+
end
|
196
|
+
|
197
|
+
def statements force=false
|
198
|
+
@statements = nil if force
|
199
|
+
@statements ||= Statement.find_by_subscription_id(id)
|
200
|
+
@statements.each do |statement|
|
201
|
+
statement.subscription = self
|
202
|
+
end
|
203
|
+
@statements
|
204
|
+
end
|
165
205
|
end
|
166
206
|
|
167
207
|
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
module Charger
|
2
|
+
class Transaction
|
3
|
+
include Resource
|
4
|
+
|
5
|
+
TYPES = %W{charge refund payment credit payment_authorization info adjustment}
|
6
|
+
|
7
|
+
attribute :transaction_type, String
|
8
|
+
attribute :id, Integer
|
9
|
+
attribute :amount_in_cents, Integer
|
10
|
+
attribute :created_at, DateTime
|
11
|
+
attribute :ending_balance_in_cents, Integer
|
12
|
+
attribute :memo, String
|
13
|
+
attribute :subscription_id, Integer
|
14
|
+
attribute :product_id, Integer
|
15
|
+
attribute :success, Boolean
|
16
|
+
attribute :payment_id, Integer
|
17
|
+
attribute :kind, String
|
18
|
+
attribute :gateway_transaction_id, String
|
19
|
+
|
20
|
+
def subscription
|
21
|
+
@subscription ||= Subscription.find(subscription_id)
|
22
|
+
end
|
23
|
+
|
24
|
+
def subscription= sub
|
25
|
+
@subscription = sub
|
26
|
+
end
|
27
|
+
|
28
|
+
def reload
|
29
|
+
return false if id.nil?
|
30
|
+
self.attributes = client.get("transactions/#{id}")['transaction']
|
31
|
+
true
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.find id
|
35
|
+
new(client.get("transactions/#{id}")['transaction'])
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.page params={}
|
39
|
+
params = {:page => 1, :per_page => 20}.merge(params)
|
40
|
+
transactions = []
|
41
|
+
client.get("transactions", params: params).each do |data|
|
42
|
+
transactions << new(data['transaction'])
|
43
|
+
end
|
44
|
+
transactions
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.all
|
48
|
+
transactions = []
|
49
|
+
params = {page: 1, per_page: 200}
|
50
|
+
|
51
|
+
loop do
|
52
|
+
response = page(params)
|
53
|
+
break if response.empty?
|
54
|
+
params[:page] += 1
|
55
|
+
transactions += response
|
56
|
+
end
|
57
|
+
|
58
|
+
transactions
|
59
|
+
end
|
60
|
+
|
61
|
+
# Finds a set of transactions for a subscription
|
62
|
+
#
|
63
|
+
# Optional Parameters:
|
64
|
+
# * kinds[] : An array of transaction types, see above
|
65
|
+
# * since_id : Returns transactions with an id greater than or equal to
|
66
|
+
# the one specified
|
67
|
+
# * max_id : Returns transactions with an id less than or equal to the one
|
68
|
+
# specified
|
69
|
+
# * since_date : (format YYYY-MM-DD) Returns transactions with a
|
70
|
+
# created_at date greater than or equal to the one specified
|
71
|
+
# * until_date : (format YYYY-MM-DD) Returns transactions with a
|
72
|
+
# created_at date less than or equal to the one specified
|
73
|
+
# * page : default is 1
|
74
|
+
# * per_page : default is 20
|
75
|
+
#
|
76
|
+
# @param [Integer] id
|
77
|
+
# @param [Hash] params See optional params
|
78
|
+
# @return [Array<Transaction>]
|
79
|
+
def self.find_by_subscription_id id, params={}
|
80
|
+
params = {:page => 1, :per_page => 20}.merge(params)
|
81
|
+
transactions = []
|
82
|
+
loop do
|
83
|
+
response = client.get("subscriptions/#{id}/transactions", params: params)
|
84
|
+
break if response.empty?
|
85
|
+
response.each do |data|
|
86
|
+
transactions << new(data['transaction'])
|
87
|
+
end
|
88
|
+
params[:page] += 1
|
89
|
+
end
|
90
|
+
transactions
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
data/lib/charger/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: charger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-02-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: virtus
|
@@ -192,15 +192,21 @@ files:
|
|
192
192
|
- lib/charger/component/on_off.rb
|
193
193
|
- lib/charger/component/price.rb
|
194
194
|
- lib/charger/component/quantity_based.rb
|
195
|
+
- lib/charger/configuration.rb
|
195
196
|
- lib/charger/credit_card.rb
|
196
197
|
- lib/charger/customer.rb
|
198
|
+
- lib/charger/event.rb
|
197
199
|
- lib/charger/line_item.rb
|
198
200
|
- lib/charger/line_item/metered.rb
|
199
201
|
- lib/charger/line_item/on_off.rb
|
200
202
|
- lib/charger/line_item/quantity_based.rb
|
201
203
|
- lib/charger/product.rb
|
202
204
|
- lib/charger/product_family.rb
|
205
|
+
- lib/charger/request.rb
|
206
|
+
- lib/charger/resource.rb
|
207
|
+
- lib/charger/statement.rb
|
203
208
|
- lib/charger/subscription.rb
|
209
|
+
- lib/charger/transaction.rb
|
204
210
|
- lib/charger/version.rb
|
205
211
|
homepage: https://github.com/warmwaffles/charger
|
206
212
|
licenses: []
|
@@ -214,18 +220,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
214
220
|
- - ! '>='
|
215
221
|
- !ruby/object:Gem::Version
|
216
222
|
version: '0'
|
217
|
-
segments:
|
218
|
-
- 0
|
219
|
-
hash: 484567601979014021
|
220
223
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
221
224
|
none: false
|
222
225
|
requirements:
|
223
226
|
- - ! '>='
|
224
227
|
- !ruby/object:Gem::Version
|
225
228
|
version: '0'
|
226
|
-
segments:
|
227
|
-
- 0
|
228
|
-
hash: 484567601979014021
|
229
229
|
requirements: []
|
230
230
|
rubyforge_project:
|
231
231
|
rubygems_version: 1.8.24
|
@@ -233,3 +233,4 @@ signing_key:
|
|
233
233
|
specification_version: 3
|
234
234
|
summary: Utilizes Chargify's REST API
|
235
235
|
test_files: []
|
236
|
+
has_rdoc:
|