besepa 0.8.4 → 0.8.5

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: 1c0e5f99e08193de199b94a887072a52663487e0
4
- data.tar.gz: 40feb6d8d03b2fcc5d6076bdd6c67601d1be626e
3
+ metadata.gz: b73ed9ea22a0fffcb79dd2d6ba7d1356b1273805
4
+ data.tar.gz: 226bd640c1a0a9ebc7ec3e27086a1c64e1f57ef1
5
5
  SHA512:
6
- metadata.gz: 5fe967e781d660091f396e4f901ca83ce2114f88a6114172de5219903c7ed2297804064d148c48e0dd9960eb0f29248dac3cef4f244e2f22007a5ba0c3c42869
7
- data.tar.gz: 3f4b38823792e1facb2931f03a2ce5281218bdae9de702cf6cd9a4b8d63a198e99a03dbe008efef23ec09017e10a77608c6514acf40b098c0ed5ebc846b194c7
6
+ metadata.gz: f3d220de2915a17686ffc5bb797f5415b1e5ebe220fedaaee3681f10e1ba6c6631ab360eb8ee7c852c865dcc60b4ead60dfd6d7f6c6b41c5f03e8b89dba7e272
7
+ data.tar.gz: 31c81e438ad72697b7bbcde1bb980905d72044d6eb065be4e887f96ed43860cf5c63efa27dec5c9f4b024f1abeb3fe14fac021ae85009b725bf3edcfd635e9e5
@@ -4,7 +4,6 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'besepa/utils/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
-
8
7
  spec.name = "besepa"
9
8
  spec.version = Besepa::Utils::VERSION
10
9
  spec.authors = ["besepa.com"]
@@ -21,11 +20,10 @@ Gem::Specification.new do |spec|
21
20
 
22
21
  spec.add_dependency('faraday', '~> 0.9')
23
22
  spec.add_dependency('faraday_middleware', '~> 0.9')
24
-
23
+
25
24
  spec.add_development_dependency "bundler", "~> 1.3"
26
-
25
+
27
26
  spec.add_development_dependency 'rspec', '~> 3.1'
28
27
  spec.add_development_dependency 'webmock', '~> 1.20'
29
28
  spec.add_development_dependency "rake"
30
-
31
29
  end
@@ -4,7 +4,7 @@ module Besepa
4
4
  module ClassMethods
5
5
  def search(filters = {})
6
6
  path = "/#{api_path}/search"
7
- params = filters.select{|x| [:page, :field, :value].include?(x)}
7
+ params = filters.select{|x| [:page, :query, :field, :value].include?(x)}
8
8
  response = get(path, params)
9
9
  Besepa::Collection.new(response, self)
10
10
  end
@@ -1,15 +1,12 @@
1
1
  module Besepa
2
-
3
2
  module ApiCalls
4
-
5
3
  module Update
6
-
7
4
  def save(filters={})
8
5
  h = self.to_hash
9
- #id and status should not be send back to the server
10
- h.delete(:status)
6
+ # id and status should not be send back to the server
7
+ h.delete(:status)
11
8
  h.delete(:id)
12
- #remove all nil values. Not updated.
9
+ # remove all nil values. Not updated.
13
10
  h.delete_if {|key, value| value.nil? unless allowed_nils.include?(key)}
14
11
  payload = {}
15
12
  payload[self.class.klass_name] = h
@@ -17,7 +14,6 @@ module Besepa
17
14
  process_attributes(response['response'])
18
15
  self
19
16
  end
20
-
21
17
  end
22
18
  end
23
- end
19
+ end
@@ -2,17 +2,18 @@ module Besepa
2
2
  class BankAccount < Besepa::Resource
3
3
 
4
4
  include Besepa::ApiCalls::List
5
+ include Besepa::ApiCalls::Search
5
6
  include Besepa::ApiCalls::Create
6
7
  include Besepa::ApiCalls::Update
7
8
  include Besepa::ApiCalls::Destroy
8
9
 
9
- FIELDS = [:id, :iban, :bic, :bank_name, :status, :customer_id, :created_at, :stats]
10
+ FIELDS = [:id, :iban, :bic, :bank_name, :status, :created_at, :customer_id]
10
11
 
11
12
  FIELDS.each do |f|
12
13
  attr_accessor f
13
14
  end
14
15
 
15
- attr_accessor :mandate
16
+ attr_accessor :mandate, :customer
16
17
 
17
18
  def self.klass_name
18
19
  "bank_account"
@@ -55,9 +56,15 @@ module Besepa
55
56
  values[key] = self.send("#{key.to_s}")
56
57
  end
57
58
  values[:mandate] = mandate.to_hash if mandate
59
+ values[:customer] = customer.to_hash if customer
58
60
  values
59
61
  end
60
62
 
63
+ def stats
64
+ response = get "#{api_path}/stats"
65
+ response['response']
66
+ end
67
+
61
68
  protected
62
69
 
63
70
  def self.query_params(filters = {})
@@ -67,11 +74,17 @@ module Besepa
67
74
  end
68
75
 
69
76
  def self.api_path(filters={})
77
+ customer_id = filters[:customer_id]
78
+
79
+ if customer_id
70
80
  "#{Customer.api_path}/#{CGI.escape(filters[:customer_id])}/bank_accounts"
81
+ else
82
+ '/bank_accounts'
83
+ end
71
84
  end
72
85
 
73
86
  def api_path(filters={})
74
- "#{Customer.api_path}/#{CGI.escape(filters[:customer_id]||customer_id)}/bank_accounts/#{CGI.escape(id)}"
87
+ "#{self.class.api_path(filters)}/#{CGI.escape(id)}"
75
88
  end
76
89
 
77
90
  def process_attributes(attrs)
@@ -79,6 +92,7 @@ module Besepa
79
92
  self.send("#{key.to_s}=", attrs[key.to_s] || attrs[key.to_sym])
80
93
  end
81
94
  self.mandate = Besepa::Mandate.new(attrs['mandate']) if attrs['mandate']
95
+ self.customer = Besepa::Customer.new(attrs['customer']) if attrs['customer']
82
96
  process_activities(attrs)
83
97
  self
84
98
  end
@@ -21,12 +21,22 @@ module Besepa
21
21
  self
22
22
  end
23
23
 
24
+ def self.default
25
+ response = get "#{api_path}/default"
26
+ self.new(response['response'])
27
+ end
28
+
24
29
  def activation_request
25
30
  response = put "#{api_path}/activation_request"
26
31
  process_attributes(response['response'])
27
32
  self
28
33
  end
29
34
 
35
+ def stats
36
+ response = get "#{api_path}/stats"
37
+ response['response']
38
+ end
39
+
30
40
  protected
31
41
 
32
42
  def self.api_path(filters={})
@@ -10,7 +10,7 @@ module Besepa
10
10
  FIELDS = [:id, :name, :taxid, :reference,
11
11
  :contact_name, :contact_email, :contact_phone, :contact_language,
12
12
  :address_street, :address_city, :address_postalcode, :address_state,
13
- :address_country, :group_ids, :status, :created_at, :stats]
13
+ :address_country, :group_ids, :status, :created_at]
14
14
 
15
15
  FIELDS.each do |f|
16
16
  attr_accessor f
@@ -107,7 +107,10 @@ module Besepa
107
107
 
108
108
  params[:mandate] = { scheme: (mandate_options[:scheme] || "CORE"),
109
109
  used: (mandate_options[:used] || false),
110
- mandate_type: (mandate_options[:type] || "RECURRENT") }
110
+ mandate_type: (mandate_options[:type] || "RECURRENT")
111
+ }
112
+
113
+ params[:mandate][:product_id] = mandate_options[:product_id] if mandate_options[:product_id]
111
114
 
112
115
  if mandate_options[:signature_date]
113
116
  params[:mandate][:signed_at] = mandate_options[:signature_date]
@@ -139,5 +142,14 @@ module Besepa
139
142
  params[:metadata] = metadata if metadata
140
143
  Debit.create( params, {:customer_id => id} )
141
144
  end
145
+
146
+ def api_path(filters = {})
147
+ "#{self.class.api_path(filters)}/#{CGI.escape(id)}"
148
+ end
149
+
150
+ def stats
151
+ response = get "#{api_path}/stats"
152
+ response['response']
153
+ end
142
154
  end
143
155
  end
@@ -2,6 +2,7 @@ module Besepa
2
2
  class Debit < Besepa::Resource
3
3
 
4
4
  include Besepa::ApiCalls::List
5
+ include Besepa::ApiCalls::Search
5
6
  include Besepa::ApiCalls::Create
6
7
  include Besepa::ApiCalls::Update
7
8
  include Besepa::ApiCalls::Destroy
@@ -6,7 +6,7 @@ module Besepa
6
6
  include Besepa::ApiCalls::Update
7
7
  include Besepa::ApiCalls::Destroy
8
8
 
9
- FIELDS = [:id, :name, :reference, :created_at, :stats]
9
+ FIELDS = [:id, :name, :reference, :created_at, :memberships_count]
10
10
 
11
11
  FIELDS.each do |f|
12
12
  attr_accessor f
@@ -16,6 +16,15 @@ module Besepa
16
16
  Customer.search({ field: :group_id, value: id})
17
17
  end
18
18
 
19
+ def stats
20
+ response = get "#{api_path}/stats"
21
+ response['response']
22
+ end
23
+
24
+ def api_path(filters = {})
25
+ "#{self.class.api_path(filters)}/#{CGI.escape(id)}"
26
+ end
27
+
19
28
  protected
20
29
 
21
30
  def self.query_params(filters = {})
@@ -0,0 +1,63 @@
1
+ module Besepa
2
+ class Payment < Besepa::Resource
3
+
4
+ include Besepa::ApiCalls::List
5
+ include Besepa::ApiCalls::Search
6
+
7
+ FIELDS = [:id, :reference, :amount, :currency, :status, :send_at, :sent_at, :description, :metadata, :created_at]
8
+
9
+ ALLOWED_NILS = [:collect_at]
10
+
11
+ FIELDS.each do |f|
12
+ attr_accessor f
13
+ end
14
+
15
+ attr_accessor :customer, :debtor_bank_account, :creditor_bank_account
16
+
17
+ def to_hash
18
+ values = {}
19
+ self.class::FIELDS.each do |key|
20
+ values[key] = self.send("#{key.to_s}")
21
+ end
22
+ values[:debtor_bank_account] = debtor_bank_account.to_hash if debtor_bank_account
23
+ values[:creditor_bank_account] = creditor_bank_account.to_hash if creditor_bank_account
24
+ values[:customer] = customer.to_hash if customer
25
+ values
26
+ end
27
+
28
+ def allowed_nils
29
+ ALLOWED_NILS
30
+ end
31
+
32
+ protected
33
+
34
+ def self.query_params(filters = {})
35
+ filters = filters.dup
36
+ filters.delete(:customer_id)
37
+ filters
38
+ end
39
+
40
+ def self.api_path(filters={})
41
+ customer_id = filters[:customer_id]
42
+ if customer_id
43
+ "#{Customer.api_path}/#{CGI.escape(customer_id)}/payments"
44
+ else
45
+ '/payments'
46
+ end
47
+ end
48
+
49
+ def api_path(filters={})
50
+ "#{self.class.api_path(filters)}/#{CGI.escape(id)}"
51
+ end
52
+
53
+ def process_attributes(attrs)
54
+ self.class::FIELDS.each do |key|
55
+ self.send("#{key.to_s}=", attrs[key.to_s] || attrs[key.to_sym])
56
+ end
57
+ self.debtor_bank_account = Besepa::BankAccount.new(attrs['debtor_bank_account']) if attrs['debtor_bank_account']
58
+ self.creditor_bank_account = Besepa::BusinessAccount.new(attrs['creditor_bank_account']) if attrs['creditor_bank_account']
59
+ self.customer = Besepa::Customer.new(attrs['customer']) if attrs['customer']
60
+ self
61
+ end
62
+ end
63
+ end
@@ -1,19 +1,20 @@
1
1
  module Besepa
2
2
 
3
3
  class Product < Besepa::Resource
4
-
4
+
5
5
  include Besepa::ApiCalls::List
6
+ include Besepa::ApiCalls::Search
6
7
  include Besepa::ApiCalls::Create
7
8
  include Besepa::ApiCalls::Update
8
9
  include Besepa::ApiCalls::Destroy
9
-
10
+
10
11
  FIELDS = [:id, :name, :amount, :currency, :reference,
11
12
  :recurrent, :max_charges, :periodicity, :period_count,
12
13
  :status, :created_at]
13
-
14
+
14
15
  FIELDS.each do |f|
15
16
  attr_accessor f
16
- end
17
+ end
17
18
 
18
19
  end
19
- end
20
+ end
@@ -1,23 +1,33 @@
1
1
  module Besepa
2
2
 
3
3
  class Remittance < Besepa::Resource
4
-
4
+
5
5
  include Besepa::ApiCalls::List
6
-
7
- FIELDS = [:id, :collect_at, :send_at, :sent_at, :status, :scheme, :created_at, :stats]
8
-
6
+
7
+ FIELDS = [:id, :collect_at, :send_at, :sent_at, :status, :scheme, :created_at, :debits_count, :debits_amount]
8
+
9
9
  attr_accessor :bank_account
10
-
10
+
11
11
  FIELDS.each do |f|
12
12
  attr_accessor f
13
- end
14
-
13
+ end
14
+
15
15
  def self.api_path(filters={})
16
16
  "/remittances"
17
17
  end
18
-
18
+
19
+ def api_path(filters={})
20
+ "#{self.class.api_path(filters)}/#{CGI.escape(id)}"
21
+ end
22
+
23
+ def stats
24
+ response = get "#{api_path}/stats"
25
+ response['response']
26
+ end
27
+
28
+
19
29
  protected
20
-
30
+
21
31
  def process_attributes(attrs)
22
32
  self.class::FIELDS.each do |key|
23
33
  self.send("#{key.to_s}=", attrs[key.to_s] || attrs[key.to_sym])
@@ -26,7 +36,7 @@ module Besepa
26
36
  process_activities(attrs)
27
37
  self
28
38
  end
29
-
39
+
30
40
 
31
41
  end
32
42
  end
@@ -4,9 +4,10 @@ module Besepa
4
4
  include Besepa::ApiCalls::List
5
5
  include Besepa::ApiCalls::Search
6
6
  include Besepa::ApiCalls::Create
7
+ include Besepa::ApiCalls::Update
7
8
  include Besepa::ApiCalls::Destroy
8
9
 
9
- FIELDS = [:id, :last_debit, :next_debit, :status, :metadata, :starts_at, :renew_at, :created_at, :setup_fee, :customer_code]
10
+ FIELDS = [:id, :last_debit, :next_debit, :status, :metadata, :starts_at, :renew_at, :created_at, :setup_fee, :customer_code, :debits_count]
10
11
 
11
12
  FIELDS.each do |f|
12
13
  attr_accessor f
@@ -40,6 +41,11 @@ module Besepa
40
41
  filters
41
42
  end
42
43
 
44
+ def stats
45
+ response = get "#{api_path}/stats"
46
+ response['response']
47
+ end
48
+
43
49
  def api_path(filters={})
44
50
  "#{self.class.api_path(filters)}/#{CGI.escape(id)}"
45
51
  end
@@ -0,0 +1,16 @@
1
+ module Besepa
2
+ class User < Besepa::Resource
3
+
4
+ include Besepa::ApiCalls::List
5
+ include Besepa::ApiCalls::Search
6
+ include Besepa::ApiCalls::Create
7
+ include Besepa::ApiCalls::Update
8
+ include Besepa::ApiCalls::Destroy
9
+
10
+ FIELDS = [:id, :name, :email, :account_id, :owner, :created_at, :updated_at, :last_sign_in_at, :time_zone, :notify_errors, :notify_mandate_signs]
11
+
12
+ FIELDS.each do |f|
13
+ attr_accessor f
14
+ end
15
+ end
16
+ end
@@ -1,6 +1,6 @@
1
1
  module Besepa
2
2
 
3
3
  module Utils
4
- VERSION = '0.8.4'.freeze
4
+ VERSION = '0.8.5'.freeze
5
5
  end
6
6
  end
@@ -63,5 +63,16 @@ describe Besepa::Subscription do
63
63
  end
64
64
  end
65
65
 
66
+ describe '#update' do
67
+ it 'posts resource to API' do
68
+ stub_get('/subscriptions/res12345').to_return(body: fixture('resource.json'), headers: {content_type: 'application/json; charset=utf-8'})
69
+ stub_put('/subscriptions/res12345').to_return(body: fixture('resource.json'), headers: {content_type: 'application/json; charset=utf-8'})
66
70
 
71
+ subscription = Besepa::Subscription.find('res12345')
72
+
73
+ subscription.save
74
+
75
+ expect(subscription).to be_an Besepa::Subscription
76
+ end
77
+ end
67
78
  end
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "response": {
3
3
  "name": "foo",
4
- "id": "cus12345"
4
+ "id": "res12345"
5
5
  }
6
6
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: besepa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.4
4
+ version: 0.8.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - besepa.com
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-07 00:00:00.000000000 Z
11
+ date: 2017-03-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -124,10 +124,12 @@ files:
124
124
  - lib/besepa/errors/resource_not_found_error.rb
125
125
  - lib/besepa/group.rb
126
126
  - lib/besepa/mandate.rb
127
+ - lib/besepa/payment.rb
127
128
  - lib/besepa/product.rb
128
129
  - lib/besepa/remittance.rb
129
130
  - lib/besepa/resource.rb
130
131
  - lib/besepa/subscription.rb
132
+ - lib/besepa/user.rb
131
133
  - lib/besepa/utils/config.rb
132
134
  - lib/besepa/utils/connection.rb
133
135
  - lib/besepa/utils/request.rb
@@ -165,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
165
167
  version: '0'
166
168
  requirements: []
167
169
  rubyforge_project:
168
- rubygems_version: 2.5.1
170
+ rubygems_version: 2.5.2
169
171
  signing_key:
170
172
  specification_version: 4
171
173
  summary: Ruby client for besepa.com