belvo 0.4.0 → 0.6.2
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/.travis.yml +9 -1
- data/Gemfile.lock +10 -10
- data/belvo.gemspec +1 -1
- data/lib/belvo.rb +12 -0
- data/lib/belvo/http.rb +16 -0
- data/lib/belvo/options.rb +17 -1
- data/lib/belvo/resources.rb +66 -9
- data/lib/belvo/utils.rb +13 -0
- data/lib/belvo/version.rb +1 -1
- metadata +8 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f7e008d86a0b4f4ff368e9027711fc3b32a81886e8a5f392d5c67f84bb417c89
|
|
4
|
+
data.tar.gz: 7aa7a82b3ee88a0b0cb6f837edaab45996fc8f6eed41024996711cdebd3f9905
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a03bc5b178bf8065bdbd8a04eaf94ba627abbabe212c272ec64d782ba4edf804a22eae7e5c75275857501e22d23708eab6efe3521dc0d589a862ce01c61ee7a8
|
|
7
|
+
data.tar.gz: 28f60a6dc881c85b213a64c6881eca73fac7f18659a534e16a3bc6eff5c4013c09db9d635a79c2f3c59af90c5214311559335d989f37f35e401db0273610e29f
|
data/.travis.yml
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
---
|
|
2
1
|
language: ruby
|
|
3
2
|
cache: bundler
|
|
4
3
|
rvm:
|
|
@@ -7,3 +6,12 @@ before_install: gem install bundler -v 2.1.4
|
|
|
7
6
|
script:
|
|
8
7
|
- bundle exec rubocop
|
|
9
8
|
- bundle exec rspec spec
|
|
9
|
+
deploy:
|
|
10
|
+
provider: rubygems
|
|
11
|
+
api_key:
|
|
12
|
+
secure: nsKurIEds1W6zwyj0mDmYx77amlDJOycegZV9o+OrBOzRRcpT+O3oFHGouMzAQyIbdUtmWyXp9uJHBEz7Q6Zc5fy6iG05sGO7tFoJMlKiPE5piiOTM5y6qt1GjZ1MYIU0rpnsp9QDsVUR1ATGpoD9O/zzn/lOPbxp2FoWHqWra84D/1jvVXPTqslLgup+GDsxseiAfwTMoTy65TXodISkvoYtlPL3EBV4/XQVBjVGGtM5mdjDJg+YA4yVA2NwCCjhFcj88fRxBmqWRnG/pzmX3nyRlMGjtUBm8OpLSR1NiXXqgzYUAVMD8/8VL/h3OsBqvwqgjZKMO6rXqNKFJQAxYUqvJaLcHP8D05dxWlumqwxlHzscKWLjAe7JbVo2DiAMvMTR8NTJOI7LOraU10iFHtmwAVnyBOaSJUVJuFgAoybq9tqYoZ/uZ7shCuWVNUIWIQM7HN9v99tfvemXMB+2RIN565bzBWSorn5MvXsApvqCLLDFuRnt7urR+0ZyT4dKXgvWRhnNOQgiMwEE/8+Y66nKVB7iNxFDw6LtittyoOZ0HvbHQDtqXOkzT/yaq2Ff2zwuUNYrCHqcdnxg5TBOYg5ndurcFxAc77ZlNSvidEC9tgXHA1m+r0Vq+ZCWOiyyohX33ZfA/UsAIStKr7a6ZLZZywuiqXasg1O9XoRB74=
|
|
13
|
+
gem: belvo
|
|
14
|
+
on:
|
|
15
|
+
tags: true
|
|
16
|
+
repo: belvo-finance/belvo-ruby
|
|
17
|
+
skip_cleanup: 'true'
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
belvo (0.
|
|
4
|
+
belvo (0.6.2)
|
|
5
5
|
faraday
|
|
6
6
|
faraday_middleware
|
|
7
7
|
typhoeus
|
|
@@ -34,9 +34,9 @@ GEM
|
|
|
34
34
|
json (2.3.0)
|
|
35
35
|
multipart-post (2.1.1)
|
|
36
36
|
parallel (1.19.1)
|
|
37
|
-
parser (2.7.1.
|
|
37
|
+
parser (2.7.1.2)
|
|
38
38
|
ast (~> 2.4.0)
|
|
39
|
-
public_suffix (4.0.
|
|
39
|
+
public_suffix (4.0.5)
|
|
40
40
|
rainbow (3.0.0)
|
|
41
41
|
rake (12.3.3)
|
|
42
42
|
rexml (3.2.4)
|
|
@@ -44,15 +44,15 @@ GEM
|
|
|
44
44
|
rspec-core (~> 3.9.0)
|
|
45
45
|
rspec-expectations (~> 3.9.0)
|
|
46
46
|
rspec-mocks (~> 3.9.0)
|
|
47
|
-
rspec-core (3.9.
|
|
48
|
-
rspec-support (~> 3.9.
|
|
49
|
-
rspec-expectations (3.9.
|
|
47
|
+
rspec-core (3.9.2)
|
|
48
|
+
rspec-support (~> 3.9.3)
|
|
49
|
+
rspec-expectations (3.9.2)
|
|
50
50
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
51
51
|
rspec-support (~> 3.9.0)
|
|
52
52
|
rspec-mocks (3.9.1)
|
|
53
53
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
54
54
|
rspec-support (~> 3.9.0)
|
|
55
|
-
rspec-support (3.9.
|
|
55
|
+
rspec-support (3.9.3)
|
|
56
56
|
rubocop (0.81.0)
|
|
57
57
|
jaro_winkler (~> 1.5.1)
|
|
58
58
|
parallel (~> 1.10)
|
|
@@ -61,7 +61,7 @@ GEM
|
|
|
61
61
|
rexml
|
|
62
62
|
ruby-progressbar (~> 1.7)
|
|
63
63
|
unicode-display_width (>= 1.4.0, < 2.0)
|
|
64
|
-
rubocop-rspec (1.
|
|
64
|
+
rubocop-rspec (1.39.0)
|
|
65
65
|
rubocop (>= 0.68.1)
|
|
66
66
|
ruby-progressbar (1.10.1)
|
|
67
67
|
safe_yaml (1.0.5)
|
|
@@ -74,9 +74,9 @@ GEM
|
|
|
74
74
|
term-ansicolor (1.7.1)
|
|
75
75
|
tins (~> 1.0)
|
|
76
76
|
thor (1.0.1)
|
|
77
|
-
tins (1.
|
|
77
|
+
tins (1.25.0)
|
|
78
78
|
sync
|
|
79
|
-
typhoeus (1.
|
|
79
|
+
typhoeus (1.4.0)
|
|
80
80
|
ethon (>= 0.9.0)
|
|
81
81
|
unicode-display_width (1.7.0)
|
|
82
82
|
webmock (3.8.3)
|
data/belvo.gemspec
CHANGED
|
@@ -6,7 +6,7 @@ Gem::Specification.new do |spec|
|
|
|
6
6
|
spec.name = 'belvo'
|
|
7
7
|
spec.version = Belvo::VERSION
|
|
8
8
|
spec.authors = ['Belvo Finance S.L.']
|
|
9
|
-
spec.email = ['
|
|
9
|
+
spec.email = ['sdks@belvo.co']
|
|
10
10
|
spec.license = 'MIT'
|
|
11
11
|
spec.summary = 'The Ruby gem for the Belvo API'
|
|
12
12
|
spec.description = %(Belvo is the leading Open Banking API platform in Latin
|
data/lib/belvo.rb
CHANGED
|
@@ -63,6 +63,12 @@ module Belvo
|
|
|
63
63
|
@statements = Statement.new @session
|
|
64
64
|
end
|
|
65
65
|
|
|
66
|
+
# Provides access to Incomes resource
|
|
67
|
+
# @return [Income]
|
|
68
|
+
def incomes
|
|
69
|
+
@incomes = Income.new @session
|
|
70
|
+
end
|
|
71
|
+
|
|
66
72
|
# Provides access to Invoices resource
|
|
67
73
|
# @return [Invoice]
|
|
68
74
|
def invoices
|
|
@@ -86,5 +92,11 @@ module Belvo
|
|
|
86
92
|
def institutions
|
|
87
93
|
@institutions = Institution.new @session
|
|
88
94
|
end
|
|
95
|
+
|
|
96
|
+
# Provides access to WidgetToken resource
|
|
97
|
+
# @return [WidgetToken]
|
|
98
|
+
def widget_token
|
|
99
|
+
@widget_token = WidgetToken.new @session
|
|
100
|
+
end
|
|
89
101
|
end
|
|
90
102
|
end
|
data/lib/belvo/http.rb
CHANGED
|
@@ -11,6 +11,9 @@ require 'belvo/exceptions'
|
|
|
11
11
|
module Belvo
|
|
12
12
|
# Describes a Belvo API session
|
|
13
13
|
class APISession
|
|
14
|
+
attr_reader :key_id
|
|
15
|
+
attr_reader :key_password
|
|
16
|
+
|
|
14
17
|
# @param url [String] Belvo API host url
|
|
15
18
|
# @return [Faraday::Connection]
|
|
16
19
|
def initialize(url)
|
|
@@ -117,6 +120,19 @@ module Belvo
|
|
|
117
120
|
response.body
|
|
118
121
|
end
|
|
119
122
|
|
|
123
|
+
# Perform a POST request to an API endpoint
|
|
124
|
+
# @param path [String] API endpoint
|
|
125
|
+
# @param id [String] Resource UUID
|
|
126
|
+
# @param data [object] JSON parseable object
|
|
127
|
+
# @return [Hash] Response details
|
|
128
|
+
# @raise [RequestError] If response code is different than 2XX
|
|
129
|
+
def token(path, id, data)
|
|
130
|
+
resource_path = format('%<path>s%<id>s/token/', path: path, id: id)
|
|
131
|
+
response = @session.post(resource_path, data.to_json)
|
|
132
|
+
raise_for_status response
|
|
133
|
+
response.body
|
|
134
|
+
end
|
|
135
|
+
|
|
120
136
|
# Perform a POST request to an API endpoint
|
|
121
137
|
# @param path [String] API endpoint
|
|
122
138
|
# @param data [object] JSON parseable object
|
data/lib/belvo/options.rb
CHANGED
|
@@ -7,13 +7,19 @@ module Belvo
|
|
|
7
7
|
# Contains the configurable properties for a Link
|
|
8
8
|
# @!attribute access_mode [rw] Link access mode (SINGLE or RECURRENT)
|
|
9
9
|
# @!attribute token [rw] OTP token required by the institution
|
|
10
|
+
# @!attribute username2 [rw] End-user secondary username, if any
|
|
11
|
+
# @!attribute password2 [rw] End-user secondary password, if any
|
|
10
12
|
# @!attribute encryption_key [rw] Custom encryption key
|
|
11
13
|
# @!attribute username_type [rw] Type of the username provided
|
|
12
14
|
class LinkOptions < Faraday::Options.new(
|
|
13
15
|
:access_mode,
|
|
14
16
|
:token,
|
|
17
|
+
:username2,
|
|
18
|
+
:password2,
|
|
15
19
|
:encryption_key,
|
|
16
|
-
:username_type
|
|
20
|
+
:username_type,
|
|
21
|
+
:certificate,
|
|
22
|
+
:private_key
|
|
17
23
|
)
|
|
18
24
|
end
|
|
19
25
|
|
|
@@ -84,6 +90,16 @@ module Belvo
|
|
|
84
90
|
)
|
|
85
91
|
end
|
|
86
92
|
|
|
93
|
+
# @!class IncomeOptions < Faraday::Options
|
|
94
|
+
# Contains configurable properties of an Income
|
|
95
|
+
# @!attribute save_data [rw] Should data be persisted or not.
|
|
96
|
+
# @!attribute encryption_key [rw] Custom encryption key
|
|
97
|
+
class IncomeOptions < Faraday::Options.new(
|
|
98
|
+
:encryption_key,
|
|
99
|
+
:save_data
|
|
100
|
+
)
|
|
101
|
+
end
|
|
102
|
+
|
|
87
103
|
# @!class InvoiceOptions < Faraday::Options
|
|
88
104
|
# Contains configurable properties of an Invoice
|
|
89
105
|
# @!attribute save_data [rw] Should data be persisted or not.
|
data/lib/belvo/resources.rb
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
require 'date'
|
|
4
4
|
require 'belvo/options'
|
|
5
|
+
require 'belvo/utils'
|
|
5
6
|
|
|
6
7
|
module Belvo
|
|
7
8
|
# Represents a consumable REST resource from Belvo API
|
|
@@ -76,7 +77,6 @@ module Belvo
|
|
|
76
77
|
# @param institution [String] Institution name
|
|
77
78
|
# @param username [String] End-user username
|
|
78
79
|
# @param password [String] End-user password
|
|
79
|
-
# @param password2 [String, nil] End-user secondary password, if any
|
|
80
80
|
# @param options [LinkOptions] Configurable properties
|
|
81
81
|
# @return [Hash] created link details
|
|
82
82
|
# @raise [RequestError] If response code is different than 2XX
|
|
@@ -84,19 +84,16 @@ module Belvo
|
|
|
84
84
|
institution:,
|
|
85
85
|
username:,
|
|
86
86
|
password:,
|
|
87
|
-
password2: nil,
|
|
88
87
|
options: nil
|
|
89
88
|
)
|
|
90
89
|
options = LinkOptions.from(options)
|
|
90
|
+
options.certificate = Utils.read_file_to_b64(options.certificate)
|
|
91
|
+
options.private_key = Utils.read_file_to_b64(options.private_key)
|
|
91
92
|
body = {
|
|
92
93
|
institution: institution,
|
|
93
94
|
username: username,
|
|
94
95
|
password: password,
|
|
95
|
-
|
|
96
|
-
token: options.token,
|
|
97
|
-
encryption_key: options.encryption_key,
|
|
98
|
-
access_mode: options.access_mode || AccessMode::SINGLE,
|
|
99
|
-
username_type: options.username_type
|
|
96
|
+
access_mode: options.access_mode || AccessMode::SINGLE
|
|
100
97
|
}.merge(options)
|
|
101
98
|
body = clean body: body
|
|
102
99
|
@session.post(@endpoint, body)
|
|
@@ -109,17 +106,34 @@ module Belvo
|
|
|
109
106
|
# @param options [LinkOptions] Configurable properties
|
|
110
107
|
# @return [Hash] link details
|
|
111
108
|
# @raise [RequestError] If response code is different than 2XX
|
|
112
|
-
def update(id:, password
|
|
109
|
+
def update(id:, password: nil, password2: nil, options: nil)
|
|
113
110
|
options = LinkOptions.from(options)
|
|
111
|
+
options.certificate = Utils.read_file_to_b64(options.certificate)
|
|
112
|
+
options.private_key = Utils.read_file_to_b64(options.private_key)
|
|
114
113
|
body = {
|
|
115
114
|
password: password,
|
|
116
115
|
password2: password2,
|
|
117
116
|
token: options.token,
|
|
118
|
-
encryption_key: options.encryption_key
|
|
117
|
+
encryption_key: options.encryption_key,
|
|
118
|
+
username_type: options.username_type,
|
|
119
|
+
certificate: options.certificate,
|
|
120
|
+
private_key: options.private_key
|
|
119
121
|
}.merge(options)
|
|
120
122
|
body = clean body: body
|
|
121
123
|
@session.put(@endpoint, id, body)
|
|
122
124
|
end
|
|
125
|
+
|
|
126
|
+
# Allows to create a token with client-specified scope and short TTL.
|
|
127
|
+
# @param id [String] Link UUID
|
|
128
|
+
# @param scopes [String] Configurable scopes eg: "read_links,write_links"
|
|
129
|
+
# @return [Hash] with a "refresh" and "access" token
|
|
130
|
+
# @raise [RequestError] If response code is different than 2XX
|
|
131
|
+
def token(id:, scopes:)
|
|
132
|
+
body = {
|
|
133
|
+
scopes: scopes
|
|
134
|
+
}
|
|
135
|
+
@session.token(@endpoint, id, body)
|
|
136
|
+
end
|
|
123
137
|
end
|
|
124
138
|
|
|
125
139
|
# An Account is the representation of a bank account inside a financial
|
|
@@ -267,6 +281,30 @@ module Belvo
|
|
|
267
281
|
end
|
|
268
282
|
end
|
|
269
283
|
|
|
284
|
+
# A Income contains a resume of monthly Transactions inside an Account.
|
|
285
|
+
class Income < Resource
|
|
286
|
+
def initialize(session)
|
|
287
|
+
super(session)
|
|
288
|
+
@endpoint = 'incomes/'
|
|
289
|
+
end
|
|
290
|
+
|
|
291
|
+
# Retrieve incomes information from a specific banking link.
|
|
292
|
+
# @param link [String] Link UUID
|
|
293
|
+
# @param options [IncomesOptions] Configurable properties
|
|
294
|
+
# @return [Hash] created incomes details
|
|
295
|
+
# @raise [RequestError] If response code is different than 2XX
|
|
296
|
+
def retrieve(link:, options: nil)
|
|
297
|
+
options = IncomeOptions.from(options)
|
|
298
|
+
body = {
|
|
299
|
+
link: link,
|
|
300
|
+
encryption_key: options.encryption_key,
|
|
301
|
+
save_data: options.save_data || true
|
|
302
|
+
}.merge(options)
|
|
303
|
+
body = clean body: body
|
|
304
|
+
@session.post(@endpoint, body)
|
|
305
|
+
end
|
|
306
|
+
end
|
|
307
|
+
|
|
270
308
|
# An Invoice is the representation of an electronic invoice, that can be
|
|
271
309
|
# received or sent, by a business or an individual and has been uploaded
|
|
272
310
|
# to the fiscal institution website
|
|
@@ -373,4 +411,23 @@ module Belvo
|
|
|
373
411
|
@endpoint = 'institutions/'
|
|
374
412
|
end
|
|
375
413
|
end
|
|
414
|
+
|
|
415
|
+
# A WidgetToken is a limited scope with short time to live token, that
|
|
416
|
+
# contains access and refresh keys to allow you embedding Belvo's Connect
|
|
417
|
+
# Widget into your app.
|
|
418
|
+
class WidgetToken < Resource
|
|
419
|
+
def initialize(session)
|
|
420
|
+
super(session)
|
|
421
|
+
@endpoint = 'token/'
|
|
422
|
+
end
|
|
423
|
+
|
|
424
|
+
def create
|
|
425
|
+
body = {
|
|
426
|
+
id: @session.key_id,
|
|
427
|
+
password: @session.key_password,
|
|
428
|
+
scopes: 'read_institutions,write_links,read_links,delete_links'
|
|
429
|
+
}
|
|
430
|
+
@session.post(@endpoint, body)
|
|
431
|
+
end
|
|
432
|
+
end
|
|
376
433
|
end
|
data/lib/belvo/utils.rb
ADDED
data/lib/belvo/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: belvo
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.6.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Belvo Finance S.L.
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-10-08 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: faraday
|
|
@@ -141,7 +141,7 @@ description: |-
|
|
|
141
141
|
America and the easiest way for users to connect their
|
|
142
142
|
account to an app
|
|
143
143
|
email:
|
|
144
|
-
-
|
|
144
|
+
- sdks@belvo.co
|
|
145
145
|
executables: []
|
|
146
146
|
extensions: []
|
|
147
147
|
extra_rdoc_files: []
|
|
@@ -167,6 +167,7 @@ files:
|
|
|
167
167
|
- lib/belvo/http.rb
|
|
168
168
|
- lib/belvo/options.rb
|
|
169
169
|
- lib/belvo/resources.rb
|
|
170
|
+
- lib/belvo/utils.rb
|
|
170
171
|
- lib/belvo/version.rb
|
|
171
172
|
homepage: https://github.com/belvo-finance/belvo-ruby
|
|
172
173
|
licenses:
|
|
@@ -175,7 +176,7 @@ metadata:
|
|
|
175
176
|
homepage_uri: https://github.com/belvo-finance/belvo-ruby
|
|
176
177
|
source_code_uri: https://github.com/belvo-finance/belvo-ruby
|
|
177
178
|
changelog_uri: https://github.com/belvo-finance/belvo-ruby/blob/master/README.md
|
|
178
|
-
post_install_message:
|
|
179
|
+
post_install_message:
|
|
179
180
|
rdoc_options: []
|
|
180
181
|
require_paths:
|
|
181
182
|
- lib
|
|
@@ -190,9 +191,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
190
191
|
- !ruby/object:Gem::Version
|
|
191
192
|
version: '0'
|
|
192
193
|
requirements: []
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
signing_key:
|
|
194
|
+
rubygems_version: 3.1.4
|
|
195
|
+
signing_key:
|
|
196
196
|
specification_version: 4
|
|
197
197
|
summary: The Ruby gem for the Belvo API
|
|
198
198
|
test_files: []
|