killbill-client 0.1.2 → 0.1.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.
- checksums.yaml +4 -4
- data/lib/killbill_client/api/net_http_adapter.rb +2 -0
- data/lib/killbill_client/models/account_timeline.rb +20 -0
- data/lib/killbill_client/models/audit_log.rb +6 -0
- data/lib/killbill_client/models/bundle.rb +10 -0
- data/lib/killbill_client/models/chargeback.rb +7 -0
- data/lib/killbill_client/models/credit.rb +7 -0
- data/lib/killbill_client/models/event.rb +10 -0
- data/lib/killbill_client/models/invoice.rb +16 -1
- data/lib/killbill_client/models/models.rb +11 -1
- data/lib/killbill_client/models/payment.rb +6 -1
- data/lib/killbill_client/models/payment_method.rb +7 -0
- data/lib/killbill_client/models/refund.rb +8 -0
- data/lib/killbill_client/models/resource.rb +97 -47
- data/lib/killbill_client/models/subscription_deleted_event.rb +6 -0
- data/lib/killbill_client/models/subscription_event.rb +9 -0
- data/lib/killbill_client/models/subscription_new_event.rb +6 -0
- data/lib/killbill_client/version.rb +1 -1
- data/spec/killbill_client/model_relation_spec.rb +74 -0
- data/spec/killbill_client/remote/model_spec.rb +22 -0
- metadata +14 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7fa054d6429ec8d29d211fe1d581ecd3e1cb8f90
|
4
|
+
data.tar.gz: 9658639f68539f0f6d7ea5d77b96027e3485045d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 058d93cbc47043cfbaa068f1c15e09ff1c48386768b2af5d85d8a9e903d914d8040feaefe4fbf1b510deeb63e000a2d638a42cab10085f513ada53d90b9f3ecb
|
7
|
+
data.tar.gz: aad960ae930ae5057c3c4b3a1a9a0dd87737dafbd588e8572bd5beee1b2e70a1d14954f2f2a681f1d48583b3ecaeb1df50dfec882be72829af89745b757ba41b
|
@@ -50,6 +50,8 @@ module KillBillClient
|
|
50
50
|
# Configure auth, if enabled
|
51
51
|
if KillBillClient.api_key and KillBillClient.api_secret
|
52
52
|
request.basic_auth(*[KillBillClient.api_key, KillBillClient.api_secret].flatten[0, 2])
|
53
|
+
request['X-Killbill-ApiKey'] = KillBillClient.api_key
|
54
|
+
request['X-Killbill-ApiSecret'] = KillBillClient.api_secret
|
53
55
|
end
|
54
56
|
|
55
57
|
if options[:body]
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module KillBillClient
|
2
|
+
module Model
|
3
|
+
class AccountTimeline < AccountTimelineAttributes
|
4
|
+
|
5
|
+
has_one :account, KillBillClient::Model::Account
|
6
|
+
has_many :payments, KillBillClient::Model::Payment
|
7
|
+
has_many :bundles, KillBillClient::Model::Bundle
|
8
|
+
has_many :invoices, KillBillClient::Model::Invoice
|
9
|
+
|
10
|
+
class << self
|
11
|
+
def find_by_account_id(account_id, audit = 'MINIMAL')
|
12
|
+
get "#{Account::KILLBILL_API_ACCOUNTS_PREFIX}/#{account_id}/timeline",
|
13
|
+
{
|
14
|
+
:audit => audit
|
15
|
+
}
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -1,7 +1,22 @@
|
|
1
1
|
module KillBillClient
|
2
2
|
module Model
|
3
|
-
class Invoice <
|
3
|
+
class Invoice < InvoiceAttributesWithBundleKeys
|
4
4
|
KILLBILL_API_INVOICES_PREFIX = "#{KILLBILL_API_PREFIX}/invoices"
|
5
|
+
|
6
|
+
has_many :audit_logs, KillBillClient::Model::AuditLog
|
7
|
+
has_many :items, KillBillClient::Model::InvoiceItem
|
8
|
+
has_many :credits, KillBillClient::Model::Credit
|
9
|
+
|
10
|
+
create_alias :bundle_keys, :external_bundle_keys
|
11
|
+
|
12
|
+
class << self
|
13
|
+
def find_by_id_or_number(id_or_number, with_items = true)
|
14
|
+
get "#{KILLBILL_API_INVOICES_PREFIX}/#{id_or_number}",
|
15
|
+
{
|
16
|
+
:withItems => with_items
|
17
|
+
}
|
18
|
+
end
|
19
|
+
end
|
5
20
|
end
|
6
21
|
end
|
7
22
|
end
|
@@ -2,13 +2,23 @@ require 'killbill_client/models/resource'
|
|
2
2
|
|
3
3
|
require 'killbill_client/models/gen/require_gen'
|
4
4
|
|
5
|
+
require 'killbill_client/models/audit_log'
|
6
|
+
require 'killbill_client/models/event'
|
7
|
+
require 'killbill_client/models/credit'
|
8
|
+
require 'killbill_client/models/invoice_item'
|
9
|
+
require 'killbill_client/models/subscription_deleted_event'
|
10
|
+
require 'killbill_client/models/subscription_new_event'
|
11
|
+
require 'killbill_client/models/chargeback'
|
12
|
+
require 'killbill_client/models/subscription_event'
|
13
|
+
require 'killbill_client/models/bundle'
|
14
|
+
require 'killbill_client/models/refund'
|
5
15
|
require 'killbill_client/models/account'
|
6
16
|
require 'killbill_client/models/invoice'
|
7
|
-
require 'killbill_client/models/invoice_item'
|
8
17
|
require 'killbill_client/models/payment'
|
9
18
|
require 'killbill_client/models/payment_method'
|
10
19
|
require 'killbill_client/models/tag'
|
11
20
|
require 'killbill_client/models/tag_definition'
|
21
|
+
require 'killbill_client/models/account_timeline'
|
12
22
|
|
13
23
|
module KillBillClient
|
14
24
|
module Model
|
@@ -1,6 +1,11 @@
|
|
1
1
|
module KillBillClient
|
2
2
|
module Model
|
3
|
-
class Payment <
|
3
|
+
class Payment < PaymentAttributesWithBundleKeys
|
4
|
+
has_many :refunds, KillBillClient::Model::Refund
|
5
|
+
has_many :chargebacks, KillBillClient::Model::Chargeback
|
6
|
+
has_many :audit_logs, KillBillClient::Model::AuditLog
|
7
|
+
|
8
|
+
create_alias :bundle_keys, :external_bundle_keys
|
4
9
|
end
|
5
10
|
end
|
6
11
|
end
|
@@ -18,6 +18,13 @@ module KillBillClient
|
|
18
18
|
}
|
19
19
|
end
|
20
20
|
|
21
|
+
def find_all_by_search_key(search_key, with_plugin_info = false)
|
22
|
+
get "#{KILLBILL_API_PAYMENT_METHODS_PREFIX}/search/#{search_key}",
|
23
|
+
{
|
24
|
+
:withPluginInfo => with_plugin_info
|
25
|
+
}
|
26
|
+
end
|
27
|
+
|
21
28
|
def set_default(payment_method_id, account_id, user = nil, reason = nil, comment = nil)
|
22
29
|
put "#{Account::KILLBILL_API_ACCOUNTS_PREFIX}/#{account_id}/paymentMethods/#{payment_method_id}/setDefault",
|
23
30
|
nil,
|
@@ -5,6 +5,7 @@ module KillBillClient
|
|
5
5
|
class Resource
|
6
6
|
|
7
7
|
KILLBILL_API_PREFIX = '/1.0/kb/'
|
8
|
+
@@attribute_names = {}
|
8
9
|
|
9
10
|
class << self
|
10
11
|
def head(uri, params = {}, options = {}, clazz = self)
|
@@ -40,14 +41,14 @@ module KillBillClient
|
|
40
41
|
# @param response [Net::HTTPResponse]
|
41
42
|
def from_response(resource_class, response)
|
42
43
|
case response['Content-Type']
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
44
|
+
when %r{application/pdf}
|
45
|
+
response.body
|
46
|
+
when %r{application/json}
|
47
|
+
record = from_json resource_class, response.body
|
48
|
+
record.instance_eval { @etag, @response = response['ETag'], response }
|
49
|
+
record
|
50
|
+
else
|
51
|
+
raise ArgumentError, "#{response['Content-Type']} is not supported by the library"
|
51
52
|
end
|
52
53
|
end
|
53
54
|
|
@@ -60,8 +61,8 @@ module KillBillClient
|
|
60
61
|
def from_json(resource_class, json)
|
61
62
|
# e.g. DELETE
|
62
63
|
return nil if json.nil? or json.size == 0
|
63
|
-
|
64
64
|
data = JSON.parse json
|
65
|
+
|
65
66
|
if data.is_a? Array
|
66
67
|
records = []
|
67
68
|
data.each do |data_element|
|
@@ -75,10 +76,34 @@ module KillBillClient
|
|
75
76
|
|
76
77
|
def instantiate_record_from_json(resource_class, data)
|
77
78
|
record = resource_class.send :new
|
78
|
-
|
79
|
+
|
80
|
+
data.each do |name, value|
|
81
|
+
name = Utils.underscore name
|
82
|
+
attr_desc = @@attribute_names[record.class.name][name.to_sym] rescue nil
|
83
|
+
|
84
|
+
unless attr_desc.nil?
|
85
|
+
type = attr_desc[:type]
|
86
|
+
if attr_desc[:cardinality] == :many && !type.nil? && value.is_a?(Array)
|
87
|
+
newValue = []
|
88
|
+
value.each do |val|
|
89
|
+
if val.is_a?(Hash)
|
90
|
+
newValue << instantiate_record_from_json(type, val)
|
91
|
+
else
|
92
|
+
newValue << val
|
93
|
+
end
|
94
|
+
end
|
95
|
+
value = newValue
|
96
|
+
elsif attr_desc[:cardinality] == :one && !type.nil? && value.is_a?(Hash)
|
97
|
+
value = instantiate_record_from_json(type, value)
|
98
|
+
end
|
99
|
+
end #end unless attr_desc.nil? or data_elem.blank?
|
100
|
+
|
101
|
+
record.send("#{Utils.underscore name}=", value )
|
102
|
+
end #end data.each
|
103
|
+
|
79
104
|
record
|
80
105
|
end
|
81
|
-
|
106
|
+
|
82
107
|
def attribute(name)
|
83
108
|
self.send('attr_accessor', name.to_sym)
|
84
109
|
|
@@ -86,40 +111,65 @@ module KillBillClient
|
|
86
111
|
self.instance_variable_get('@json_attributes') << name.to_s
|
87
112
|
|
88
113
|
attributes = self.instance_variable_get('@json_attributes')
|
89
|
-
(
|
90
|
-
class << self;
|
91
|
-
self
|
92
|
-
end).send(:define_method, :json_attributes) do
|
93
|
-
attributes
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
# Set on create call
|
99
|
-
attr_accessor :uri
|
100
114
|
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
115
|
+
(
|
116
|
+
class << self;
|
117
|
+
self
|
118
|
+
end).send(:define_method, :json_attributes) do
|
119
|
+
attributes
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
def has_many(attr_name, type = nil)
|
124
|
+
send("attr_accessor", attr_name.to_sym)
|
125
|
+
|
126
|
+
#add it to attribute_names
|
127
|
+
@@attribute_names[self.name] = {} unless @@attribute_names[self.name]
|
128
|
+
@@attribute_names[self.name][attr_name.to_sym] = {:type => type, :cardinality => :many }
|
129
|
+
end
|
130
|
+
|
131
|
+
def has_one(attr_name, type = nil)
|
132
|
+
send("attr_accessor", attr_name.to_sym)
|
133
|
+
|
134
|
+
#add it to attribute_names
|
135
|
+
@@attribute_names[self.name] = {} unless @@attribute_names[self.name]
|
136
|
+
@@attribute_names[self.name][attr_name.to_sym] = { :type => type, :cardinality => :one }
|
137
|
+
end
|
138
|
+
|
139
|
+
#hack to cater the api return attributes and javax attributes without editing gen scripts
|
140
|
+
#call only after its declared as a instance_method using attr_accessor
|
141
|
+
def create_alias(new_name, old_name)
|
142
|
+
alias_method new_name.to_sym, old_name.to_sym #getter
|
143
|
+
alias_method "#{new_name}=".to_sym, "#{old_name}=".to_sym #setter
|
144
|
+
end
|
145
|
+
|
146
|
+
end #end self methods
|
147
|
+
|
148
|
+
# Set on create call
|
149
|
+
attr_accessor :uri
|
150
|
+
|
151
|
+
def to_hash
|
152
|
+
json_hash = {}
|
153
|
+
self.class.json_attributes.each do |name|
|
154
|
+
value = self.send(name)
|
155
|
+
if value
|
156
|
+
json_hash[Utils.camelize name, :lower] = value.is_a?(Resource) ? value.to_hash : value
|
157
|
+
end
|
158
|
+
end
|
159
|
+
json_hash
|
160
|
+
end
|
161
|
+
|
162
|
+
def to_json
|
163
|
+
to_hash.to_json
|
164
|
+
end
|
165
|
+
|
166
|
+
def refresh(clazz=self.class)
|
167
|
+
if @uri
|
168
|
+
self.class.get @uri, {}, {}, clazz
|
169
|
+
else
|
170
|
+
self
|
171
|
+
end
|
172
|
+
end
|
173
|
+
end
|
174
|
+
end
|
175
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
module KillBillClient
|
2
|
+
module Model
|
3
|
+
class SubscriptionEvent < SubscriptionAttributesNoEvents
|
4
|
+
has_many :events, KillBillClient::Model::Event
|
5
|
+
has_many :deleted_events, KillBillClient::Model::SubscriptionDeletedEvent
|
6
|
+
has_many :new_events, KillBillClient::Model::SubscriptionNewEvent
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe KillBillClient::Model::Resource do
|
4
|
+
class_var_name = '@@attribute_names'
|
5
|
+
|
6
|
+
it 'should test has_one property' do
|
7
|
+
#test account_timeline has one account
|
8
|
+
#has_one :account, KillBillClient::Model::Account
|
9
|
+
#expected "KillBillClient::Model::AccountTimeline"=>{:account=>{:type=>KillBillClient::Model::Account, :cardinality=>:one}, :payments=>{:type=>KillBillClient::Model::Payment, :cardinality=>:many}, :bundles=>{:type=>KillBillClient::Model::Bundle, :cardinality=>:many}, :invoices=>{:type=>KillBillClient::Model::Invoice, :cardinality=>:many}}
|
10
|
+
test_var = KillBillClient::Model::AccountTimeline.class_variable_defined? class_var_name
|
11
|
+
test_var.should_not be_false
|
12
|
+
|
13
|
+
var = KillBillClient::Model::AccountTimeline.class_variable_get class_var_name
|
14
|
+
var.size.should > 0
|
15
|
+
var.should have_key "KillBillClient::Model::AccountTimeline"
|
16
|
+
var["KillBillClient::Model::AccountTimeline"].should have_key :account
|
17
|
+
|
18
|
+
attr = var["KillBillClient::Model::AccountTimeline"][:account]
|
19
|
+
|
20
|
+
attr.should have_key :type
|
21
|
+
attr.should have_key :cardinality
|
22
|
+
|
23
|
+
attr[:type].should == KillBillClient::Model::Account
|
24
|
+
attr[:cardinality].should == :one #has one
|
25
|
+
|
26
|
+
#should also be accessible by attr_accessors
|
27
|
+
|
28
|
+
methods = KillBillClient::Model::AccountTimeline.instance_methods
|
29
|
+
methods.should include :account # attr_reader
|
30
|
+
methods.should include :account= #attr_writer
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'should test has_many property' do
|
34
|
+
#test event has many audit_logs
|
35
|
+
#has_many :audit_logs, KillBillClient::Model::AuditLog
|
36
|
+
#expected {"KillBillClient::Model::Event"=>{:audit_logs=>{:type=>KillBillClient::Model::AuditLog, :cardinality=>:many}}}
|
37
|
+
|
38
|
+
test_var = KillBillClient::Model::Event.class_variable_defined? class_var_name
|
39
|
+
test_var.should_not be_false
|
40
|
+
|
41
|
+
var = KillBillClient::Model::Event.class_variable_get class_var_name
|
42
|
+
var.size.should > 0
|
43
|
+
var.should have_key "KillBillClient::Model::Event"
|
44
|
+
var["KillBillClient::Model::Event"].should have_key :audit_logs
|
45
|
+
|
46
|
+
attr = var["KillBillClient::Model::Event"][:audit_logs]
|
47
|
+
|
48
|
+
attr.should have_key :type
|
49
|
+
attr.should have_key :cardinality
|
50
|
+
|
51
|
+
attr[:type].should == KillBillClient::Model::AuditLog
|
52
|
+
attr[:cardinality].should == :many #has many
|
53
|
+
|
54
|
+
#should also be accessible by attr_accessors
|
55
|
+
|
56
|
+
methods = KillBillClient::Model::Event.instance_methods
|
57
|
+
methods.should include :audit_logs # attr_reader
|
58
|
+
methods.should include :audit_logs= #attr_writer
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'should create alias attr accessors' do
|
62
|
+
KillBillClient::Model::Event.create_alias :alias_date, :requested_dt
|
63
|
+
|
64
|
+
methods = KillBillClient::Model::Event.instance_methods
|
65
|
+
methods.should include :alias_date
|
66
|
+
methods.should include :alias_date=
|
67
|
+
|
68
|
+
evt = KillBillClient::Model::Event.new
|
69
|
+
evt.alias_date = "devaroop"
|
70
|
+
evt.requested_dt.should == "devaroop"
|
71
|
+
evt.alias_date.should == "devaroop"
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
@@ -82,6 +82,28 @@ describe KillBillClient::Model do
|
|
82
82
|
|
83
83
|
account = KillBillClient::Model::Account.find_by_id account.account_id
|
84
84
|
account.payment_method_id.should be_nil
|
85
|
+
|
86
|
+
# Get its timeline
|
87
|
+
timeline = KillBillClient::Model::AccountTimeline.find_by_account_id account.account_id
|
88
|
+
|
89
|
+
timeline.account.external_key.should == external_key
|
90
|
+
timeline.account.account_id.should_not be_nil
|
91
|
+
|
92
|
+
timeline.invoices.should be_a_kind_of Array
|
93
|
+
timeline.invoices.should_not be_empty
|
94
|
+
timeline.payments.should be_a_kind_of Array
|
95
|
+
timeline.bundles.should be_a_kind_of Array
|
96
|
+
|
97
|
+
# Let's find the invoice by two methods
|
98
|
+
invoice = timeline.invoices.first
|
99
|
+
invoice_id = invoice.invoice_id
|
100
|
+
invoice_number = invoice.invoice_number
|
101
|
+
|
102
|
+
invoice_with_id = KillBillClient::Model::Invoice.find_by_id_or_number invoice_id
|
103
|
+
invoice_with_number = KillBillClient::Model::Invoice.find_by_id_or_number invoice_number
|
104
|
+
|
105
|
+
invoice_with_id.invoice_id.should == invoice_with_number.invoice_id
|
106
|
+
invoice_with_id.invoice_number.should == invoice_with_number.invoice_number
|
85
107
|
end
|
86
108
|
|
87
109
|
it 'should manipulate tag definitions' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: killbill-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Killbill core team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-08-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -55,6 +55,12 @@ files:
|
|
55
55
|
- lib/killbill_client/api/errors.rb
|
56
56
|
- lib/killbill_client/api/net_http_adapter.rb
|
57
57
|
- lib/killbill_client/models/account.rb
|
58
|
+
- lib/killbill_client/models/account_timeline.rb
|
59
|
+
- lib/killbill_client/models/audit_log.rb
|
60
|
+
- lib/killbill_client/models/bundle.rb
|
61
|
+
- lib/killbill_client/models/chargeback.rb
|
62
|
+
- lib/killbill_client/models/credit.rb
|
63
|
+
- lib/killbill_client/models/event.rb
|
58
64
|
- lib/killbill_client/models/gen/account_attributes.rb
|
59
65
|
- lib/killbill_client/models/gen/account_attributes_simple.rb
|
60
66
|
- lib/killbill_client/models/gen/account_attributes_with_balance.rb
|
@@ -109,13 +115,18 @@ files:
|
|
109
115
|
- lib/killbill_client/models/models.rb
|
110
116
|
- lib/killbill_client/models/payment.rb
|
111
117
|
- lib/killbill_client/models/payment_method.rb
|
118
|
+
- lib/killbill_client/models/refund.rb
|
112
119
|
- lib/killbill_client/models/resource.rb
|
120
|
+
- lib/killbill_client/models/subscription_deleted_event.rb
|
121
|
+
- lib/killbill_client/models/subscription_event.rb
|
122
|
+
- lib/killbill_client/models/subscription_new_event.rb
|
113
123
|
- lib/killbill_client/models/tag.rb
|
114
124
|
- lib/killbill_client/models/tag_definition.rb
|
115
125
|
- lib/killbill_client/utils.rb
|
116
126
|
- lib/killbill_client/version.rb
|
117
127
|
- lib/rails/generators/killbill_client/config_generator.rb
|
118
128
|
- lib/rails/killbill_client.rb
|
129
|
+
- spec/killbill_client/model_relation_spec.rb
|
119
130
|
- spec/killbill_client/remote/api_spec.rb
|
120
131
|
- spec/killbill_client/remote/model_spec.rb
|
121
132
|
- spec/spec_helper.rb
|
@@ -146,6 +157,7 @@ signing_key:
|
|
146
157
|
specification_version: 4
|
147
158
|
summary: Kill Bill client library.
|
148
159
|
test_files:
|
160
|
+
- spec/killbill_client/model_relation_spec.rb
|
149
161
|
- spec/killbill_client/remote/api_spec.rb
|
150
162
|
- spec/killbill_client/remote/model_spec.rb
|
151
163
|
- spec/spec_helper.rb
|