balanced 0.2.5 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -0
- data/.rspec +2 -0
- data/CONTRIBUTORS +4 -0
- data/Gemfile +3 -0
- data/Guardfile +7 -0
- data/README.md +31 -2
- data/balanced.gemspec +4 -1
- data/examples/examples.rb +18 -2
- data/lib/balanced.rb +16 -25
- data/lib/balanced/client.rb +16 -39
- data/lib/balanced/resources.rb +13 -241
- data/lib/balanced/resources/account.rb +134 -0
- data/lib/balanced/resources/api_key.rb +18 -0
- data/lib/balanced/resources/bank_account.rb +34 -0
- data/lib/balanced/resources/card.rb +34 -0
- data/lib/balanced/resources/credit.rb +20 -0
- data/lib/balanced/resources/debit.rb +42 -0
- data/lib/balanced/resources/hold.rb +42 -0
- data/lib/balanced/resources/marketplace.rb +77 -0
- data/lib/balanced/resources/merchant.rb +25 -0
- data/lib/balanced/resources/refund.rb +21 -0
- data/lib/balanced/resources/resource.rb +130 -0
- data/lib/balanced/resources/transaction.rb +18 -0
- data/lib/balanced/version.rb +1 -1
- data/spec/balanced/resources/account_spec.rb +422 -0
- data/spec/balanced/resources/api_key_spec.rb +55 -0
- data/spec/balanced/resources/marketplace_spec.rb +97 -0
- data/spec/balanced_spec.rb +73 -12
- data/spec/client_spec.rb +2 -2
- data/spec/spec_helper.rb +24 -0
- data/spec/utils_spec.rb +2 -2
- metadata +85 -7
- data/lib/balanced/base.rb +0 -129
- data/spec/api_key_spec.rb +0 -20
@@ -0,0 +1,55 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Balanced::ApiKey do
|
4
|
+
describe "attributes" do
|
5
|
+
use_vcr_cassette
|
6
|
+
before do
|
7
|
+
@key = Balanced::ApiKey.new.save
|
8
|
+
end
|
9
|
+
describe "#secret" do
|
10
|
+
subject { @key.secret }
|
11
|
+
it { should_not be_nil }
|
12
|
+
it { should_not be_empty }
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "#merchant" do
|
16
|
+
subject { @key.merchant }
|
17
|
+
it { should_not be_nil }
|
18
|
+
it { should be_instance_of Balanced::Merchant }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "new key" do
|
23
|
+
use_vcr_cassette
|
24
|
+
|
25
|
+
describe "before configure" do
|
26
|
+
use_vcr_cassette
|
27
|
+
before do
|
28
|
+
@new_key = Balanced::ApiKey.new.save
|
29
|
+
end
|
30
|
+
describe "#merchant" do
|
31
|
+
use_vcr_cassette
|
32
|
+
subject { @new_key.merchant }
|
33
|
+
it { should_not be_nil }
|
34
|
+
it { should be_instance_of Balanced::Merchant }
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe "after configure" do
|
39
|
+
use_vcr_cassette
|
40
|
+
before do
|
41
|
+
@new_key = Balanced::ApiKey.new.save
|
42
|
+
Balanced.configure @new_key.secret
|
43
|
+
@new_key = Balanced::ApiKey.new.save
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "#merchant" do
|
47
|
+
use_vcr_cassette
|
48
|
+
subject { @new_key.merchant }
|
49
|
+
it { should_not be_nil }
|
50
|
+
it { should be_instance_of Balanced::Merchant }
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
|
4
|
+
describe Balanced::Marketplace do
|
5
|
+
use_vcr_cassette
|
6
|
+
before do
|
7
|
+
api_key = Balanced::ApiKey.new.save
|
8
|
+
Balanced.configure api_key.secret
|
9
|
+
@marketplace = Balanced::Marketplace.new.save
|
10
|
+
@bank_account = Balanced::BankAccount.new(
|
11
|
+
:account_number => "1234567890",
|
12
|
+
:bank_code => "321174851",
|
13
|
+
:name => "Jack Q Merchant"
|
14
|
+
).save
|
15
|
+
@merchant = @marketplace.create_merchant(
|
16
|
+
"merchant@example.org",
|
17
|
+
{
|
18
|
+
:type => "person",
|
19
|
+
:name => "Billy Jones",
|
20
|
+
:street_address => "801 High St.",
|
21
|
+
:postal_code => "94301",
|
22
|
+
:country => "USA",
|
23
|
+
:dob => "1842-01",
|
24
|
+
:phone_number => "+16505551234",
|
25
|
+
},
|
26
|
+
@bank_account.uri,
|
27
|
+
"Jack Q Merchant",
|
28
|
+
)
|
29
|
+
end
|
30
|
+
|
31
|
+
describe "create_merchant" do
|
32
|
+
use_vcr_cassette
|
33
|
+
|
34
|
+
describe "class" do
|
35
|
+
subject { @merchant }
|
36
|
+
it { should be_instance_of Balanced::Account }
|
37
|
+
end
|
38
|
+
|
39
|
+
describe "attributes" do
|
40
|
+
describe "#id" do
|
41
|
+
subject { @merchant.id }
|
42
|
+
it { should_not be_nil }
|
43
|
+
it { should_not be_empty }
|
44
|
+
end
|
45
|
+
describe "#roles" do
|
46
|
+
subject { @merchant.roles }
|
47
|
+
it { should include("merchant") }
|
48
|
+
end
|
49
|
+
describe "#email_address" do
|
50
|
+
subject { @merchant.email_address }
|
51
|
+
it { should eql "merchant@example.org" }
|
52
|
+
end
|
53
|
+
describe "#name" do
|
54
|
+
subject { @merchant.name }
|
55
|
+
it { should eql "Jack Q Merchant" }
|
56
|
+
end
|
57
|
+
describe "#created_at" do
|
58
|
+
subject { @merchant.created_at }
|
59
|
+
it { should_not be_nil }
|
60
|
+
it { should_not be_empty }
|
61
|
+
end
|
62
|
+
describe "#uri" do
|
63
|
+
subject { @merchant.uri }
|
64
|
+
it { should match MERCHANT_URI_REGEX }
|
65
|
+
end
|
66
|
+
describe "#holds_uri" do
|
67
|
+
subject { @merchant.holds_uri }
|
68
|
+
it { should match HOLDS_URI_REGEX }
|
69
|
+
end
|
70
|
+
describe "#bank_accounts_uri" do
|
71
|
+
subject { @merchant.bank_accounts_uri }
|
72
|
+
it { should match BANK_ACCOUNTS_URI_REGEX }
|
73
|
+
end
|
74
|
+
describe "#refunds_uri" do
|
75
|
+
subject { @merchant.refunds_uri }
|
76
|
+
it { should match REFUNDS_URI_REGEX }
|
77
|
+
end
|
78
|
+
describe "#debits_uri" do
|
79
|
+
subject { @merchant.debits_uri }
|
80
|
+
it { should match DEBITS_URI_REGEX }
|
81
|
+
end
|
82
|
+
describe "#transactions_uri" do
|
83
|
+
subject { @merchant.transactions_uri }
|
84
|
+
it { should match TRANSACTIONS_URI_REGEX }
|
85
|
+
end
|
86
|
+
describe "#credits_uri" do
|
87
|
+
subject { @merchant.credits_uri }
|
88
|
+
it { should match CREDITS_URI_REGEX }
|
89
|
+
end
|
90
|
+
describe "#cards_uri" do
|
91
|
+
subject { @merchant.cards_uri }
|
92
|
+
it { should match CARDS_URI_REGEX }
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
data/spec/balanced_spec.rb
CHANGED
@@ -1,16 +1,77 @@
|
|
1
|
-
require "
|
1
|
+
require "spec_helper"
|
2
2
|
|
3
|
-
describe
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
describe Balanced do
|
4
|
+
describe "configure" do
|
5
|
+
use_vcr_cassette
|
6
|
+
before do
|
7
|
+
@api_key = Balanced::ApiKey.new.save
|
7
8
|
|
8
|
-
|
9
|
-
|
10
|
-
end
|
9
|
+
Balanced.configure @api_key.secret
|
10
|
+
end
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
describe "api key" do
|
13
|
+
describe "merchant" do
|
14
|
+
subject { @api_key.merchant }
|
15
|
+
it { should_not be_nil }
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "#client" do
|
20
|
+
subject { Balanced.client }
|
21
|
+
it { should_not be_nil }
|
22
|
+
|
23
|
+
describe "#connection" do
|
24
|
+
subject { Balanced.client.conn }
|
25
|
+
it { should_not be_nil }
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "#api_key" do
|
29
|
+
subject { Balanced.client.api_key }
|
30
|
+
it { should eql @api_key.secret }
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "#url" do
|
34
|
+
subject { Balanced.client.url.to_s }
|
35
|
+
it { should eql "https://api.balancedpayments.com" }
|
36
|
+
end
|
37
|
+
end
|
15
38
|
|
16
|
-
|
39
|
+
describe "reconfigure with new api key" do
|
40
|
+
use_vcr_cassette
|
41
|
+
before do
|
42
|
+
@new_api_key = Balanced::ApiKey.new.save
|
43
|
+
Balanced.configure @new_api_key.secret
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "api key" do
|
47
|
+
describe "merchant" do
|
48
|
+
use_vcr_cassette
|
49
|
+
subject { @api_key.merchant }
|
50
|
+
it { should_not be_nil }
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe "#client" do
|
55
|
+
describe "#api_key" do
|
56
|
+
subject { Balanced.client.api_key }
|
57
|
+
it { should_not eql @api_key.secret }
|
58
|
+
it { should eql @new_api_key.secret }
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe "new api key" do
|
63
|
+
describe "secret" do
|
64
|
+
subject { @new_api_key.secret }
|
65
|
+
it { should_not be_nil }
|
66
|
+
|
67
|
+
end
|
68
|
+
describe "merchant" do
|
69
|
+
use_vcr_cassette
|
70
|
+
|
71
|
+
subject { @new_api_key.merchant }
|
72
|
+
it { should_not be_nil }
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
data/spec/client_spec.rb
CHANGED
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler/setup'
|
3
|
+
|
4
|
+
require 'balanced'
|
5
|
+
require 'vcr'
|
6
|
+
|
7
|
+
VCR.configure do |c|
|
8
|
+
c.cassette_library_dir = 'spec/cassettes'
|
9
|
+
c.hook_into :faraday
|
10
|
+
end
|
11
|
+
|
12
|
+
RSpec.configure do |c|
|
13
|
+
c.extend VCR::RSpec::Macros
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
MERCHANT_URI_REGEX = /\/v1\/marketplaces\/TEST-\w*\/accounts\/\w*/
|
18
|
+
HOLDS_URI_REGEX = /\/v1\/marketplaces\/TEST-\w*\/accounts\/\w*\/holds/
|
19
|
+
BANK_ACCOUNTS_URI_REGEX = /\/v1\/marketplaces\/TEST-\w*\/accounts\/\w*\/bank_accounts/
|
20
|
+
REFUNDS_URI_REGEX = /\/v1\/marketplaces\/TEST-\w*\/accounts\/\w*\/refunds/
|
21
|
+
DEBITS_URI_REGEX = /\/v1\/marketplaces\/TEST-\w*\/accounts\/\w*\/debits/
|
22
|
+
TRANSACTIONS_URI_REGEX = /\/v1\/marketplaces\/TEST-\w*\/accounts\/\w*\/transactions/
|
23
|
+
CREDITS_URI_REGEX = /\/v1\/marketplaces\/TEST-\w*\/accounts\/\w*\/credits/
|
24
|
+
CARDS_URI_REGEX = /\/v1\/marketplaces\/TEST-\w*\/accounts\/\w*\/cards/
|
data/spec/utils_spec.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: balanced
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
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: 2012-
|
12
|
+
date: 2012-06-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: faraday
|
@@ -50,7 +50,7 @@ dependencies:
|
|
50
50
|
requirements:
|
51
51
|
- - ~>
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '2.
|
53
|
+
version: '2.10'
|
54
54
|
type: :development
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -58,7 +58,55 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '2.
|
61
|
+
version: '2.10'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: vcr
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 2.2.0
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 2.2.0
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: guard
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ~>
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 1.1.1
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 1.1.1
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: guard-rspec
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ~>
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: 1.0.0
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 1.0.0
|
62
110
|
description: ! "Balanced is the payments platform for marketplaces.\n Integrate
|
63
111
|
a payments experience just like Amazon for your marketplace.\n Forget about dealing
|
64
112
|
with banking systems, compliance, fraud, and security.\n "
|
@@ -70,21 +118,48 @@ extra_rdoc_files: []
|
|
70
118
|
files:
|
71
119
|
- .gitignore
|
72
120
|
- .rbenv-version
|
121
|
+
- .rspec
|
122
|
+
- CONTRIBUTORS
|
73
123
|
- Gemfile
|
124
|
+
- Guardfile
|
74
125
|
- LICENSE
|
75
126
|
- README.md
|
76
127
|
- Rakefile
|
77
128
|
- balanced.gemspec
|
129
|
+
- doc/balanced_plugin.rb
|
130
|
+
- doc/balanced_templates/default/method_details/html/method_signature.erb
|
131
|
+
- doc/balanced_templates/default/module/html/children.erb
|
132
|
+
- doc/balanced_templates/default/module/html/header.erb
|
133
|
+
- doc/balanced_templates/default/module/html/method_details_list.erb
|
134
|
+
- doc/balanced_templates/default/module/html/pre_docstring.erb
|
135
|
+
- doc/balanced_templates/default/module/setup.rb
|
136
|
+
- doc/balanced_templates/default/onefile/html/layout.erb
|
137
|
+
- doc/balanced_templates/default/onefile/html/setup.rb
|
138
|
+
- doc/balanced_templates/default/tags/html/index.erb
|
78
139
|
- examples/examples.rb
|
79
140
|
- lib/balanced.rb
|
80
|
-
- lib/balanced/base.rb
|
81
141
|
- lib/balanced/client.rb
|
82
142
|
- lib/balanced/resources.rb
|
143
|
+
- lib/balanced/resources/account.rb
|
144
|
+
- lib/balanced/resources/api_key.rb
|
145
|
+
- lib/balanced/resources/bank_account.rb
|
146
|
+
- lib/balanced/resources/card.rb
|
147
|
+
- lib/balanced/resources/credit.rb
|
148
|
+
- lib/balanced/resources/debit.rb
|
149
|
+
- lib/balanced/resources/hold.rb
|
150
|
+
- lib/balanced/resources/marketplace.rb
|
151
|
+
- lib/balanced/resources/merchant.rb
|
152
|
+
- lib/balanced/resources/refund.rb
|
153
|
+
- lib/balanced/resources/resource.rb
|
154
|
+
- lib/balanced/resources/transaction.rb
|
83
155
|
- lib/balanced/utils.rb
|
84
156
|
- lib/balanced/version.rb
|
85
|
-
- spec/
|
157
|
+
- spec/balanced/resources/account_spec.rb
|
158
|
+
- spec/balanced/resources/api_key_spec.rb
|
159
|
+
- spec/balanced/resources/marketplace_spec.rb
|
86
160
|
- spec/balanced_spec.rb
|
87
161
|
- spec/client_spec.rb
|
162
|
+
- spec/spec_helper.rb
|
88
163
|
- spec/utils_spec.rb
|
89
164
|
homepage: https://balancedpayments.com
|
90
165
|
licenses: []
|
@@ -111,7 +186,10 @@ signing_key:
|
|
111
186
|
specification_version: 3
|
112
187
|
summary: Sign up on https://balancedpayments.com/
|
113
188
|
test_files:
|
114
|
-
- spec/
|
189
|
+
- spec/balanced/resources/account_spec.rb
|
190
|
+
- spec/balanced/resources/api_key_spec.rb
|
191
|
+
- spec/balanced/resources/marketplace_spec.rb
|
115
192
|
- spec/balanced_spec.rb
|
116
193
|
- spec/client_spec.rb
|
194
|
+
- spec/spec_helper.rb
|
117
195
|
- spec/utils_spec.rb
|
data/lib/balanced/base.rb
DELETED
@@ -1,129 +0,0 @@
|
|
1
|
-
module Balanced
|
2
|
-
class Resource
|
3
|
-
|
4
|
-
class << self
|
5
|
-
|
6
|
-
def resource_name
|
7
|
-
Utils.demodulize name
|
8
|
-
end
|
9
|
-
|
10
|
-
def collection_name
|
11
|
-
Utils.pluralize Utils.underscore(resource_name)
|
12
|
-
end
|
13
|
-
|
14
|
-
def collection_path
|
15
|
-
["/v#{Balanced.config[:version]}", collection_name].compact.join '/'
|
16
|
-
end
|
17
|
-
|
18
|
-
def member_name
|
19
|
-
Utils.underscore resource_name
|
20
|
-
end
|
21
|
-
|
22
|
-
def construct_from_response payload
|
23
|
-
payload = Balanced::Utils.hash_with_indifferent_read_access payload
|
24
|
-
klass = Balanced.from_uri(payload[:uri])
|
25
|
-
instance = klass.new payload
|
26
|
-
payload.each do |name, value|
|
27
|
-
klass.class_eval {
|
28
|
-
attr_accessor name.to_s
|
29
|
-
}
|
30
|
-
# here is where our interpretations will begin.
|
31
|
-
# if the value is a sub-resource, lets instantiate the class
|
32
|
-
# and set it correctly
|
33
|
-
if value.instance_of? Hash and value.has_key? 'uri'
|
34
|
-
value = construct_from_response value
|
35
|
-
elsif name =~ /_uri$/
|
36
|
-
modified_name = name.sub(/_uri$/, '')
|
37
|
-
klass.instance_eval {
|
38
|
-
define_method(modified_name) {
|
39
|
-
values_class = Balanced.from_uri(value)
|
40
|
-
# if uri is a collection -> this would definitely be if it ends in a symbol
|
41
|
-
# then we should allow a lazy executor of the query pager
|
42
|
-
if Balanced.is_collection(value)
|
43
|
-
# TODO: return the pager
|
44
|
-
p "TODO: return the pager for this class: #{values_class}"
|
45
|
-
values_class.new
|
46
|
-
else
|
47
|
-
values_class.find(value)
|
48
|
-
end
|
49
|
-
}
|
50
|
-
}
|
51
|
-
end
|
52
|
-
|
53
|
-
instance.class.instance_eval {
|
54
|
-
define_method(name) { self[name] } # Get.
|
55
|
-
define_method("#{name}=") { |value| self[name] = value } # Set.
|
56
|
-
define_method("#{name}?") { !!self[name] } # Present.
|
57
|
-
}
|
58
|
-
instance.send("#{name}=".to_s, value)
|
59
|
-
end
|
60
|
-
instance
|
61
|
-
end
|
62
|
-
|
63
|
-
end
|
64
|
-
|
65
|
-
attr_reader :attributes
|
66
|
-
|
67
|
-
def initialize attributes = {}
|
68
|
-
@attributes = attributes
|
69
|
-
self.attributes = attributes
|
70
|
-
end
|
71
|
-
|
72
|
-
def attributes= attributes = {}
|
73
|
-
attributes.each_pair { |k, v|
|
74
|
-
respond_to?(name = "#{k}=") and send(name, v) or (self[k] = v)
|
75
|
-
}
|
76
|
-
end
|
77
|
-
|
78
|
-
def read_attribute key
|
79
|
-
attributes[key.to_s]
|
80
|
-
end
|
81
|
-
alias [] read_attribute
|
82
|
-
|
83
|
-
def write_attribute key, value
|
84
|
-
attributes[key] = value
|
85
|
-
end
|
86
|
-
alias []= write_attribute
|
87
|
-
|
88
|
-
# delegate the query to the pager module
|
89
|
-
|
90
|
-
def find uri, options={}
|
91
|
-
response = Balanced.get uri
|
92
|
-
self.class.construct_from_response response.body
|
93
|
-
end
|
94
|
-
|
95
|
-
def save
|
96
|
-
uri = self.attributes.delete('uri') { |key| nil }
|
97
|
-
method = :post
|
98
|
-
if uri.nil?
|
99
|
-
uri = self.class.collection_path
|
100
|
-
elsif !Balanced.is_collection(uri)
|
101
|
-
method = :put
|
102
|
-
end
|
103
|
-
response = Balanced.send(method, uri, self.attributes)
|
104
|
-
reload response
|
105
|
-
end
|
106
|
-
|
107
|
-
def destroy
|
108
|
-
Balanced.delete self.attributes['uri']
|
109
|
-
end
|
110
|
-
|
111
|
-
def reload response = nil
|
112
|
-
if response
|
113
|
-
return if response.body.to_s.length.zero?
|
114
|
-
fresh = self.class.construct_from_response response.body
|
115
|
-
else
|
116
|
-
fresh = self.find(@attributes['uri'])
|
117
|
-
end
|
118
|
-
fresh and copy_from fresh
|
119
|
-
self
|
120
|
-
end
|
121
|
-
|
122
|
-
def copy_from other
|
123
|
-
other.instance_variables.each do |ivar|
|
124
|
-
instance_variable_set ivar, other.instance_variable_get(ivar)
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
end
|
129
|
-
end
|