peakium 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ad6fa15589cfc6f99c51e0c63b5fbce1e357a494
4
- data.tar.gz: 9e626d881d802bd0ce907ea9ea063a3cfd1ddefa
3
+ metadata.gz: c23348d7eacabf13241a0586bcd18e78011bcef6
4
+ data.tar.gz: 706651ed3603765c5688eb09cf22bc4b7bca3c01
5
5
  SHA512:
6
- metadata.gz: c2bb3011d97ee05912167fb8d3927fa34f048b2045428704ba04e3d630bbabdd0e7f4ad61013589341b8e669bef2755b9e63e5579101ab8804c5e2b862b3c98a
7
- data.tar.gz: afb6312f0cedb87f5ac36f7a28ab0773f5e053025dfae3a8ff8600980943cdda4387f4af691921289b3c5b150b07b97205b60a31b2e24b2cb30ebcbfca7ff9f7
6
+ metadata.gz: 4b6cc82c6102b2e8b6595e6355b155d7973d231af1cab340aa32c31c28db40403551450089f899c46660ebb6a0fed784c67f91532c814e00b34e9feea75a83a5
7
+ data.tar.gz: 748dfb32ab4e179cf05bdd5103e14e4445c572baeb702df6f06cbcd5dff0dc81767a0107e4578b0b96b1e5def5c89f5549303ac429185bd7bbdea9902a8d2d1a
@@ -1,14 +1,17 @@
1
1
  module Peakium
2
2
  class Customer < APIResource
3
+ include Peakium::APIOperations::Create
3
4
  include Peakium::APIOperations::List
5
+ include Peakium::APIOperations::Update
4
6
 
5
7
  def subscriptions
6
8
  Subscription.all({ :customer => id }, @api_key)
7
9
  end
8
10
 
9
- def cancel_subscription(token)
10
- response, api_key = Peakium.request(:delete, subscription_url(token), @api_key)
11
- refresh_from({ :subscription => response }, api_key, true)
11
+ def subscription(token)
12
+ subscription = Subscription.new(token, @api_key)
13
+ subscription['customer'] = self
14
+ subscription.refresh
12
15
  subscription
13
16
  end
14
17
 
@@ -0,0 +1,5 @@
1
+ module Peakium
2
+ class GatewayModule < APIResource
3
+ include Peakium::APIOperations::List
4
+ end
5
+ end
@@ -1,6 +1,7 @@
1
1
  module Peakium
2
2
  class Invoice < APIResource
3
3
  include Peakium::APIOperations::List
4
+ include Peakium::APIOperations::Create
4
5
 
5
6
  def overdue(params={}, api_key = nil)
6
7
  params = params + { :overdue => true }
@@ -1,6 +1,13 @@
1
1
  module Peakium
2
2
  class Subscription < APIResource
3
3
  include Peakium::APIOperations::List
4
+ include Peakium::APIOperations::Update
5
+ include Peakium::APIOperations::Delete
6
+
7
+ def initialize(id=nil, api_key=nil)
8
+ super(id, api_key)
9
+ @values[:token] = id if id
10
+ end
4
11
 
5
12
  def id
6
13
  unless id = self['token']
@@ -14,13 +21,11 @@ module Peakium
14
21
  end
15
22
 
16
23
  def endpoint_url
17
- unless token = self['id']
18
- raise InvalidRequestError.new("Could not determine which endpoint URL to request: #{self.class} instance has invalid token: #{token.inspect}", 'token')
19
- end
20
24
  unless customer = self['customer']
21
25
  raise InvalidRequestError.new("Could not determine which endpoint URL to request: #{self.class} instance has invalid #{Customer.class}: #{customer.inspect}", 'customer')
22
26
  end
23
- url = customer.endpoint_url + "/subscriptions/#{CGI.escape(token)}"
27
+ customer = Peakium::Customer.retrieve(customer, @api_key) if customer.is_a? String
28
+ url = customer.endpoint_url + "/subscriptions/#{CGI.escape(id)}"
24
29
  end
25
30
  end
26
31
  end
@@ -26,6 +26,6 @@ module Peakium
26
26
  url += "#{(endpoint_url.include? '?') ? '&' : '?'}#{Peakium.uri_encode(params)}" if params && params.any?
27
27
  self.endpoint_url = url
28
28
  self
29
- end
29
+ end
30
30
  end
31
31
  end
data/lib/peakium/util.rb CHANGED
@@ -21,6 +21,7 @@ module Peakium
21
21
  'event' => Event,
22
22
  'event_webhook' => EventWebhook,
23
23
  'gateway' => Gateway,
24
+ 'gateway_module' => GatewayModule,
24
25
  'invoice' => Invoice,
25
26
  'payment_session' => PaymentSession,
26
27
  'subscription' => Subscription,
@@ -1,3 +1,3 @@
1
1
  module Peakium
2
- VERSION = '0.1.2'
2
+ VERSION = '0.1.3'
3
3
  end
data/lib/peakium.rb CHANGED
@@ -26,6 +26,7 @@ require 'peakium/api_resources/customer'
26
26
  require 'peakium/api_resources/event'
27
27
  require 'peakium/api_resources/event_webhook'
28
28
  require 'peakium/api_resources/gateway'
29
+ require 'peakium/api_resources/gateway_module'
29
30
  require 'peakium/api_resources/invoice'
30
31
  require 'peakium/api_resources/payment_session'
31
32
  require 'peakium/api_resources/subscription'
data/peakium.gemspec CHANGED
@@ -13,6 +13,7 @@ spec = Gem::Specification.new do |s|
13
13
  s.license = 'MIT'
14
14
 
15
15
  s.add_dependency('rest-client', '~> 1.4')
16
+ s.add_dependency('mime-types', '~> 1.25')
16
17
  s.add_dependency('json', '~> 1.8.1')
17
18
 
18
19
  s.add_development_dependency('mocha', '~> 0.13.2')
@@ -291,7 +291,6 @@ module Peakium
291
291
  assert e.kind_of? Peakium::InvalidRequestError
292
292
  assert_equal "id", e.param
293
293
  assert_equal "Missing id", e.message
294
- return
295
294
  end
296
295
 
297
296
  assert_equal true, rescued
@@ -10,12 +10,19 @@ module Peakium
10
10
  assert c[0].kind_of? Peakium::Customer
11
11
  end
12
12
 
13
- should "be able to cancel a customer's subscription" do
13
+ should "create should return a new customer" do
14
+ @mock.expects(:post).once.returns(test_response(test_customer))
15
+ g = Peakium::Customer.create
16
+ assert_equal "cu_test_customer", g.id
17
+ end
18
+
19
+ should "subscription fetched with nested resource" do
14
20
  @mock.expects(:get).once.returns(test_response(test_customer))
15
- c = Peakium::Customer.retrieve("test_customer")
21
+ c = Peakium::Customer.retrieve("cu_test_customer")
16
22
 
17
- @mock.expects(:delete).once.with("#{Peakium.api_base}/v1/customers/test_customer/subscriptions/test_subscription", nil, nil).returns(test_response(test_subscription()))
18
- s = c.cancel_subscription('test_subscription');
23
+ @mock.expects(:get).once.returns(test_response(test_subscription))
24
+ s = c.subscription("test_subscription")
25
+ assert_equal('/v1/customers/cu_test_customer/subscriptions/test_subscription', s.endpoint_url)
19
26
  end
20
27
  end
21
28
  end
@@ -9,5 +9,16 @@ module Peakium
9
9
  assert s.kind_of? Array
10
10
  assert s[0].kind_of? Peakium::Subscription
11
11
  end
12
+
13
+ should "subscriptions should be deletable" do
14
+ @mock.expects(:get).once.returns(test_response(test_customer))
15
+ c = Peakium::Customer.retrieve("cu_test_customer")
16
+
17
+ @mock.expects(:get).once.returns(test_response(test_subscription))
18
+ s = c.subscription("test_subscription")
19
+
20
+ @mock.expects(:delete).once.with("#{Peakium.api_base}/v1/customers/cu_test_customer/subscriptions/test_subscription", nil, nil).returns(test_response(test_subscription()))
21
+ s.delete
22
+ end
12
23
  end
13
24
  end
data/test/test_helper.rb CHANGED
@@ -50,9 +50,9 @@ def test_customer(params={})
50
50
  {
51
51
  :livemode => false,
52
52
  :object => "customer",
53
- :id => "test_customer",
53
+ :id => "cu_test_customer",
54
54
  :created => 1375217068,
55
- :balances => [],
55
+ :balances => {},
56
56
  }.merge(params)
57
57
  end
58
58
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: peakium
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Schultzer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-01 00:00:00.000000000 Z
11
+ date: 2014-08-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.4'
27
+ - !ruby/object:Gem::Dependency
28
+ name: mime-types
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.25'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.25'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: json
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -127,6 +141,7 @@ files:
127
141
  - lib/peakium/api_resources/event.rb
128
142
  - lib/peakium/api_resources/event_webhook.rb
129
143
  - lib/peakium/api_resources/gateway.rb
144
+ - lib/peakium/api_resources/gateway_module.rb
130
145
  - lib/peakium/api_resources/invoice.rb
131
146
  - lib/peakium/api_resources/payment_session.rb
132
147
  - lib/peakium/api_resources/submission_form.rb