belvo 0.10.0 → 0.14.0
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/.github/workflows/danger-pr-reviews.yml +48 -0
- data/Dangerfile +21 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +44 -2
- data/LICENSE +1 -1
- data/README.md +6 -0
- data/lib/belvo.rb +6 -1
- data/lib/belvo/http.rb +1 -2
- data/lib/belvo/options.rb +11 -26
- data/lib/belvo/resources.rb +38 -17
- data/lib/belvo/utils.rb +16 -0
- data/lib/belvo/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: '038fbaeb161f1c341855ded020989160dc8ebbbcea33f5fe05fa0c92c81d0bcf'
|
|
4
|
+
data.tar.gz: 4eee5f78d13eb4fff6a3a01ed50aa673a4b62b0bb10b45b86795d8e980f1a48d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4845b72c9a053c7bc8fabe97d6990cd1006fc75b4493f42944aac21cc3aea72860a2d9d7ab0cc0ae56f1a68f465c9c0aff1c9ca76c39e3ee82a4f638862f955b
|
|
7
|
+
data.tar.gz: d41485f0c38659baa74b675d9220f3f1a07086d62c0ead42c886e3dedd06d0c4bcaab7ee878cc5cbe1dcf06e01eb7cd0d71413925be407c26af1617b596e1e1f
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
name: Run Danger
|
|
2
|
+
|
|
3
|
+
on: [pull_request]
|
|
4
|
+
|
|
5
|
+
jobs:
|
|
6
|
+
build:
|
|
7
|
+
name: Run Danger
|
|
8
|
+
runs-on: ubuntu-latest
|
|
9
|
+
|
|
10
|
+
steps:
|
|
11
|
+
- name: Checkout Code
|
|
12
|
+
uses: actions/checkout@v2
|
|
13
|
+
with:
|
|
14
|
+
fetch-depth: 1
|
|
15
|
+
|
|
16
|
+
# Setup ruby
|
|
17
|
+
- name: Set up Ruby 2.6
|
|
18
|
+
uses: actions/setup-ruby@v1
|
|
19
|
+
with:
|
|
20
|
+
ruby-version: 2.6
|
|
21
|
+
|
|
22
|
+
# Install the right bundler version
|
|
23
|
+
- name: Install bundler
|
|
24
|
+
run: gem install bundler
|
|
25
|
+
|
|
26
|
+
# Cache dependencies
|
|
27
|
+
- name: Cache ruby dependencies
|
|
28
|
+
id: cache-ruby
|
|
29
|
+
uses: actions/cache@v2
|
|
30
|
+
with:
|
|
31
|
+
path: vendor/bundle
|
|
32
|
+
key: union-gems-${{ hashFiles('**/Gemfile.lock') }}
|
|
33
|
+
restore-keys: |
|
|
34
|
+
union-gems-
|
|
35
|
+
# Install dependencies on cache miss
|
|
36
|
+
- name: Install ruby dependencies
|
|
37
|
+
if: steps.cache-ruby.outputs.cache-hit != 'true'
|
|
38
|
+
run: |
|
|
39
|
+
bundle config path vendor/bundle
|
|
40
|
+
bundle install --jobs 4 --retry 3 --without=documentation
|
|
41
|
+
# Run danger
|
|
42
|
+
- name: Run danger
|
|
43
|
+
env:
|
|
44
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
45
|
+
run: |
|
|
46
|
+
bundle config path vendor/bundle
|
|
47
|
+
bundle exec danger
|
|
48
|
+
|
data/Dangerfile
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# rubocop:disable all
|
|
2
|
+
# Mainly to encourage writing up some reasoning about the PR, rather than
|
|
3
|
+
# just leaving a title
|
|
4
|
+
fail "Please provide a short summary in the PR description :page_with_curl:" if github.pr_body.length < 10
|
|
5
|
+
|
|
6
|
+
# The title should include the correct prefix tag
|
|
7
|
+
if !github.pr_title.match(/^\[(?:Fixed|Added|Changed|Removed|Security|Other)\]/)
|
|
8
|
+
fail "Please provide a valid PR title label: [Added]/[Fixed]/[Changed]/[Removed]/[Security]/[Other]"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# The title should include the JIRA ticket unless is a dependabot PR
|
|
12
|
+
if github.pr_labels.include?("dependencies")
|
|
13
|
+
message ("PR autogenerated by dependabot")
|
|
14
|
+
elsif !github.pr_title.match(/^\[.*\]\s?\[BEL-\d+\]/)
|
|
15
|
+
fail "Please provide a valid Jira ticket ID associated to this PR: [BEL-XXXX]. If you do not have any associated Jira ticket, just use [BEL-XXXX]"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
warn("PR is classed as Work in Progress", sticky: false) if github.pr_title.include? "[WIP]"
|
|
19
|
+
|
|
20
|
+
message("One approval required for merging :smiley_cat: :smiley_cat:")
|
|
21
|
+
# rubocop:enable all
|
data/Gemfile
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# rubocop:disable all
|
|
1
2
|
# frozen_string_literal: true
|
|
2
3
|
|
|
3
4
|
source 'https://rubygems.org'
|
|
@@ -13,4 +14,6 @@ gem 'rspec', '~> 3.0'
|
|
|
13
14
|
gem 'rubocop', '~> 0.81.0', require: false
|
|
14
15
|
gem 'rubocop-rspec', require: false
|
|
15
16
|
gem 'typhoeus'
|
|
17
|
+
gem 'danger', '8.2.1'
|
|
16
18
|
gem 'webmock'
|
|
19
|
+
# rubocop:enable all
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
belvo (0.
|
|
4
|
+
belvo (0.14.0)
|
|
5
5
|
faraday
|
|
6
6
|
faraday_middleware
|
|
7
7
|
typhoeus
|
|
@@ -12,6 +12,14 @@ GEM
|
|
|
12
12
|
addressable (2.7.0)
|
|
13
13
|
public_suffix (>= 2.0.2, < 5.0)
|
|
14
14
|
ast (2.4.1)
|
|
15
|
+
claide (1.0.3)
|
|
16
|
+
claide-plugins (0.9.2)
|
|
17
|
+
cork
|
|
18
|
+
nap
|
|
19
|
+
open4 (~> 1.3)
|
|
20
|
+
colored2 (3.1.2)
|
|
21
|
+
cork (0.3.0)
|
|
22
|
+
colored2 (~> 3.1)
|
|
15
23
|
coveralls (0.8.23)
|
|
16
24
|
json (>= 1.8, < 3)
|
|
17
25
|
simplecov (~> 0.16.1)
|
|
@@ -19,6 +27,19 @@ GEM
|
|
|
19
27
|
thor (>= 0.19.4, < 2.0)
|
|
20
28
|
tins (~> 1.6)
|
|
21
29
|
crack (0.4.4)
|
|
30
|
+
danger (8.2.1)
|
|
31
|
+
claide (~> 1.0)
|
|
32
|
+
claide-plugins (>= 0.9.2)
|
|
33
|
+
colored2 (~> 3.1)
|
|
34
|
+
cork (~> 0.1)
|
|
35
|
+
faraday (>= 0.9.0, < 2.0)
|
|
36
|
+
faraday-http-cache (~> 2.0)
|
|
37
|
+
git (~> 1.7)
|
|
38
|
+
kramdown (~> 2.3)
|
|
39
|
+
kramdown-parser-gfm (~> 1.0)
|
|
40
|
+
no_proxy_fix
|
|
41
|
+
octokit (~> 4.7)
|
|
42
|
+
terminal-table (~> 1)
|
|
22
43
|
diff-lcs (1.4.4)
|
|
23
44
|
docile (1.3.2)
|
|
24
45
|
ethon (0.12.0)
|
|
@@ -26,20 +47,35 @@ GEM
|
|
|
26
47
|
faraday (1.1.0)
|
|
27
48
|
multipart-post (>= 1.2, < 3)
|
|
28
49
|
ruby2_keywords
|
|
50
|
+
faraday-http-cache (2.2.0)
|
|
51
|
+
faraday (>= 0.8)
|
|
29
52
|
faraday_middleware (1.0.0)
|
|
30
53
|
faraday (~> 1.0)
|
|
31
54
|
ffi (1.13.1)
|
|
55
|
+
git (1.8.1)
|
|
56
|
+
rchardet (~> 1.8)
|
|
32
57
|
hashdiff (1.0.1)
|
|
33
58
|
jaro_winkler (1.5.4)
|
|
34
59
|
json (2.3.1)
|
|
60
|
+
kramdown (2.3.1)
|
|
61
|
+
rexml
|
|
62
|
+
kramdown-parser-gfm (1.1.0)
|
|
63
|
+
kramdown (~> 2.0)
|
|
35
64
|
multipart-post (2.1.1)
|
|
65
|
+
nap (1.1.0)
|
|
66
|
+
no_proxy_fix (0.1.2)
|
|
67
|
+
octokit (4.21.0)
|
|
68
|
+
faraday (>= 0.9)
|
|
69
|
+
sawyer (~> 0.8.0, >= 0.5.3)
|
|
70
|
+
open4 (1.3.4)
|
|
36
71
|
parallel (1.20.0)
|
|
37
72
|
parser (2.7.2.0)
|
|
38
73
|
ast (~> 2.4.1)
|
|
39
74
|
public_suffix (4.0.6)
|
|
40
75
|
rainbow (3.0.0)
|
|
41
76
|
rake (12.3.3)
|
|
42
|
-
|
|
77
|
+
rchardet (1.8.0)
|
|
78
|
+
rexml (3.2.5)
|
|
43
79
|
rspec (3.10.0)
|
|
44
80
|
rspec-core (~> 3.10.0)
|
|
45
81
|
rspec-expectations (~> 3.10.0)
|
|
@@ -65,6 +101,9 @@ GEM
|
|
|
65
101
|
rubocop (>= 0.68.1)
|
|
66
102
|
ruby-progressbar (1.10.1)
|
|
67
103
|
ruby2_keywords (0.0.2)
|
|
104
|
+
sawyer (0.8.2)
|
|
105
|
+
addressable (>= 2.3.5)
|
|
106
|
+
faraday (> 0.8, < 2.0)
|
|
68
107
|
simplecov (0.16.1)
|
|
69
108
|
docile (~> 1.1)
|
|
70
109
|
json (>= 1.8, < 3)
|
|
@@ -73,6 +112,8 @@ GEM
|
|
|
73
112
|
sync (0.5.0)
|
|
74
113
|
term-ansicolor (1.7.1)
|
|
75
114
|
tins (~> 1.0)
|
|
115
|
+
terminal-table (1.8.0)
|
|
116
|
+
unicode-display_width (~> 1.1, >= 1.1.1)
|
|
76
117
|
thor (1.0.1)
|
|
77
118
|
tins (1.26.0)
|
|
78
119
|
sync
|
|
@@ -90,6 +131,7 @@ PLATFORMS
|
|
|
90
131
|
DEPENDENCIES
|
|
91
132
|
belvo!
|
|
92
133
|
coveralls
|
|
134
|
+
danger (= 8.2.1)
|
|
93
135
|
faraday
|
|
94
136
|
faraday_middleware
|
|
95
137
|
rake (~> 12.0)
|
data/LICENSE
CHANGED
data/README.md
CHANGED
|
@@ -73,6 +73,12 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
|
73
73
|
|
|
74
74
|
Bug reports and pull requests are welcome on GitHub at https://github.com/belvo-finance/belvo-ruby. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/belvo-finance/belvo-ruby/blob/master/CODE_OF_CONDUCT.md).
|
|
75
75
|
|
|
76
|
+
If you wish to submit a pull request, please be sure check the items on this list:
|
|
77
|
+
- [ ] Tests related to the changed code were executed
|
|
78
|
+
- [ ] The source code has been coded following the OWASP security best practices (https://owasp.org/www-pdf-archive/OWASP_SCP_Quick_Reference_Guide_v2.pdf).
|
|
79
|
+
- [ ] Commit message properly labeled
|
|
80
|
+
- [ ] There is a ticket associated to each PR.
|
|
81
|
+
|
|
76
82
|
|
|
77
83
|
## Code of Conduct
|
|
78
84
|
|
data/lib/belvo.rb
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
require 'belvo/http'
|
|
4
4
|
require 'belvo/exceptions'
|
|
5
5
|
require 'belvo/resources'
|
|
6
|
+
require 'belvo/utils'
|
|
6
7
|
|
|
7
8
|
module Belvo
|
|
8
9
|
# Allows easy access to Belvo API servers.
|
|
@@ -18,7 +19,11 @@ module Belvo
|
|
|
18
19
|
# @return [APISession] Authenticated Belvo API session
|
|
19
20
|
def initialize(secret_key_id, secret_key_password, url = nil)
|
|
20
21
|
(belvo_api_url = url) || ENV['BELVO_API_URL']
|
|
21
|
-
|
|
22
|
+
belvo_api_url = Environment.get_url(belvo_api_url)
|
|
23
|
+
|
|
24
|
+
if belvo_api_url.nil?
|
|
25
|
+
raise BelvoAPIError, 'You need to provide a URL or a valid environment.'
|
|
26
|
+
end
|
|
22
27
|
|
|
23
28
|
@session = Belvo::APISession.new(belvo_api_url)
|
|
24
29
|
|
data/lib/belvo/http.rb
CHANGED
data/lib/belvo/options.rb
CHANGED
|
@@ -10,7 +10,6 @@ module Belvo
|
|
|
10
10
|
# @!attribute username2 [rw] End-user secondary username, if any
|
|
11
11
|
# @!attribute username3 [rw] End-user tertiary username, if any
|
|
12
12
|
# @!attribute password2 [rw] End-user secondary password, if any
|
|
13
|
-
# @!attribute encryption_key [rw] Custom encryption key
|
|
14
13
|
# @!attribute username_type [rw] Type of the username provided
|
|
15
14
|
class LinkOptions < Faraday::Options.new(
|
|
16
15
|
:access_mode,
|
|
@@ -18,10 +17,10 @@ module Belvo
|
|
|
18
17
|
:username2,
|
|
19
18
|
:username3,
|
|
20
19
|
:password2,
|
|
21
|
-
:encryption_key,
|
|
22
20
|
:username_type,
|
|
23
21
|
:certificate,
|
|
24
|
-
:private_key
|
|
22
|
+
:private_key,
|
|
23
|
+
:external_id
|
|
25
24
|
)
|
|
26
25
|
end
|
|
27
26
|
|
|
@@ -29,11 +28,9 @@ module Belvo
|
|
|
29
28
|
# Contains the configurable properties for an Account
|
|
30
29
|
# @!attribute save_data [rw] Should data be persisted or not.
|
|
31
30
|
# @!attribute token [rw] OTP token required by the institution
|
|
32
|
-
# @!attribute encryption_key [rw] Custom encryption key
|
|
33
31
|
class AccountOptions < Faraday::Options.new(
|
|
34
32
|
:save_data,
|
|
35
|
-
:token
|
|
36
|
-
:encryption_key
|
|
33
|
+
:token
|
|
37
34
|
)
|
|
38
35
|
end
|
|
39
36
|
|
|
@@ -43,12 +40,10 @@ module Belvo
|
|
|
43
40
|
# @!attribute account [rw] Account ID (UUID)
|
|
44
41
|
# @!attribute save_data [rw] Should data be persisted or not.
|
|
45
42
|
# @!attribute token [rw] OTP token required by the institution
|
|
46
|
-
# @!attribute encryption_key [rw] Custom encryption key
|
|
47
43
|
class TransactionOptions < Faraday::Options.new(
|
|
48
44
|
:date_to,
|
|
49
45
|
:account,
|
|
50
46
|
:token,
|
|
51
|
-
:encryption_key,
|
|
52
47
|
:save_data
|
|
53
48
|
)
|
|
54
49
|
end
|
|
@@ -57,8 +52,7 @@ module Belvo
|
|
|
57
52
|
# Contains configurable properties of an Owner
|
|
58
53
|
# @!attribute save_data [rw] Should data be persisted or not.
|
|
59
54
|
# @!attribute token [rw] OTP token required by the institution
|
|
60
|
-
|
|
61
|
-
class OwnerOptions < Faraday::Options.new(:token, :encryption_key, :save_data)
|
|
55
|
+
class OwnerOptions < Faraday::Options.new(:token, :save_data)
|
|
62
56
|
end
|
|
63
57
|
|
|
64
58
|
# @!class BalanceOptions < Faraday::Options
|
|
@@ -67,12 +61,10 @@ module Belvo
|
|
|
67
61
|
# @!attribute account [rw] Account ID (UUID)
|
|
68
62
|
# @!attribute save_data [rw] Should data be persisted or not.
|
|
69
63
|
# @!attribute token [rw] OTP token required by the institution
|
|
70
|
-
# @!attribute encryption_key [rw] Custom encryption key
|
|
71
64
|
class BalanceOptions < Faraday::Options.new(
|
|
72
65
|
:date_to,
|
|
73
66
|
:account,
|
|
74
67
|
:token,
|
|
75
|
-
:encryption_key,
|
|
76
68
|
:save_data
|
|
77
69
|
)
|
|
78
70
|
end
|
|
@@ -81,12 +73,10 @@ module Belvo
|
|
|
81
73
|
# Contains configurable properties of a Statement
|
|
82
74
|
# @!attribute save_data [rw] Should data be persisted or not.
|
|
83
75
|
# @!attribute token [rw] OTP token required by the institution
|
|
84
|
-
# @!attribute encryption_key [rw] Custom encryption key
|
|
85
76
|
# @!attribute attach_pdf [rw] Should the PDF file be included in the
|
|
86
77
|
# response or not.
|
|
87
78
|
class StatementOptions < Faraday::Options.new(
|
|
88
79
|
:token,
|
|
89
|
-
:encryption_key,
|
|
90
80
|
:save_data,
|
|
91
81
|
:attach_pdf
|
|
92
82
|
)
|
|
@@ -95,9 +85,7 @@ module Belvo
|
|
|
95
85
|
# @!class IncomeOptions < Faraday::Options
|
|
96
86
|
# Contains configurable properties of an Income
|
|
97
87
|
# @!attribute save_data [rw] Should data be persisted or not.
|
|
98
|
-
# @!attribute encryption_key [rw] Custom encryption key
|
|
99
88
|
class IncomeOptions < Faraday::Options.new(
|
|
100
|
-
:encryption_key,
|
|
101
89
|
:save_data
|
|
102
90
|
)
|
|
103
91
|
end
|
|
@@ -106,13 +94,11 @@ module Belvo
|
|
|
106
94
|
# Contains configurable properties of an Invoice
|
|
107
95
|
# @!attribute save_data [rw] Should data be persisted or not.
|
|
108
96
|
# @!attribute token [rw] OTP token required by the institution
|
|
109
|
-
# @!attribute encryption_key [rw] Custom encryption key
|
|
110
97
|
# @!attribute attach_xml [rw] Should the XML file be included in the
|
|
111
98
|
# response or not.
|
|
112
99
|
class InvoiceOptions < Faraday::Options.new(
|
|
113
100
|
:save_data,
|
|
114
101
|
:token,
|
|
115
|
-
:encryption_key,
|
|
116
102
|
:attach_xml
|
|
117
103
|
)
|
|
118
104
|
end
|
|
@@ -121,12 +107,10 @@ module Belvo
|
|
|
121
107
|
# Contains configurable properties of a TaxComplianceStatus
|
|
122
108
|
# @!attribute save_data [rw] Should data be persisted or not.
|
|
123
109
|
# @!attribute token [rw] OTP token required by the institution
|
|
124
|
-
# @!attribute encryption_key [rw] Custom encryption key
|
|
125
110
|
# @!attribute attach_pdf [rw] Should the PDF file be included in the
|
|
126
111
|
# response or not.
|
|
127
112
|
class TaxComplianceStatusOptions < Faraday::Options.new(
|
|
128
113
|
:token,
|
|
129
|
-
:encryption_key,
|
|
130
114
|
:save_data,
|
|
131
115
|
:attach_pdf
|
|
132
116
|
)
|
|
@@ -136,14 +120,15 @@ module Belvo
|
|
|
136
120
|
# Contains configurable properties of a TaxReturn
|
|
137
121
|
# @!attribute save_data [rw] Should data be persisted or not.
|
|
138
122
|
# @!attribute token [rw] OTP token required by the institution
|
|
139
|
-
# @!attribute encryption_key [rw] Custom encryption key
|
|
140
123
|
# @!attribute attach_pdf [rw] Should the PDF file be included in the
|
|
141
124
|
# response or not.
|
|
142
125
|
class TaxReturnOptions < Faraday::Options.new(
|
|
143
126
|
:token,
|
|
144
|
-
:encryption_key,
|
|
145
127
|
:save_data,
|
|
146
|
-
:attach_pdf
|
|
128
|
+
:attach_pdf,
|
|
129
|
+
:type,
|
|
130
|
+
:date_from,
|
|
131
|
+
:date_to
|
|
147
132
|
)
|
|
148
133
|
end
|
|
149
134
|
|
|
@@ -151,12 +136,10 @@ module Belvo
|
|
|
151
136
|
# Contains configurable properties of a TaxStatus
|
|
152
137
|
# @!attribute save_data [rw] Should data be persisted or not.
|
|
153
138
|
# @!attribute token [rw] OTP token required by the institution
|
|
154
|
-
# @!attribute encryption_key [rw] Custom encryption key
|
|
155
139
|
# @!attribute attach_pdf [rw] Should the PDF file be included in the
|
|
156
140
|
# response or not.
|
|
157
141
|
class TaxStatusOptions < Faraday::Options.new(
|
|
158
142
|
:token,
|
|
159
|
-
:encryption_key,
|
|
160
143
|
:save_data,
|
|
161
144
|
:attach_pdf
|
|
162
145
|
)
|
|
@@ -165,9 +148,11 @@ module Belvo
|
|
|
165
148
|
# Contains configurable properties of a WidgetToken
|
|
166
149
|
# @!attribute scopes [rw] Should have WidgetToken's permssions.
|
|
167
150
|
# @!attribute link [rw] Should the WidgetToken be tied to a specific link.
|
|
151
|
+
# @!attribute widget [rw] Should have the Widget branding params.
|
|
168
152
|
class WidgetTokenOptions < Faraday::Options.new(
|
|
169
153
|
:scopes,
|
|
170
|
-
:link
|
|
154
|
+
:link,
|
|
155
|
+
:widget
|
|
171
156
|
)
|
|
172
157
|
end
|
|
173
158
|
end
|
data/lib/belvo/resources.rb
CHANGED
|
@@ -99,7 +99,7 @@ module Belvo
|
|
|
99
99
|
@session.post(@endpoint, body)
|
|
100
100
|
end
|
|
101
101
|
|
|
102
|
-
# Allows to change password, password2
|
|
102
|
+
# Allows to change password, password2
|
|
103
103
|
# @param id [String] Link UUID
|
|
104
104
|
# @param password [String] End-user password
|
|
105
105
|
# @param password2 [String, nil] End-user secondary password, if any
|
|
@@ -114,7 +114,6 @@ module Belvo
|
|
|
114
114
|
password: password,
|
|
115
115
|
password2: password2,
|
|
116
116
|
token: options.token,
|
|
117
|
-
encryption_key: options.encryption_key,
|
|
118
117
|
username_type: options.username_type,
|
|
119
118
|
certificate: options.certificate,
|
|
120
119
|
private_key: options.private_key
|
|
@@ -134,6 +133,24 @@ module Belvo
|
|
|
134
133
|
}
|
|
135
134
|
@session.token(@endpoint, id, body)
|
|
136
135
|
end
|
|
136
|
+
|
|
137
|
+
# Patch an existing link
|
|
138
|
+
# @param id [String] Link UUID
|
|
139
|
+
# @param options [LinkOptions] Configurable properties
|
|
140
|
+
# @return [Hash] created link details
|
|
141
|
+
# @raise [RequestError] If response code is different than 2XX
|
|
142
|
+
def patch(
|
|
143
|
+
id:,
|
|
144
|
+
options: nil
|
|
145
|
+
)
|
|
146
|
+
options = LinkOptions.from(options)
|
|
147
|
+
body = {
|
|
148
|
+
access_mode: options.access_mode
|
|
149
|
+
}.merge(options)
|
|
150
|
+
body = clean body: body
|
|
151
|
+
resource_path = format('%<path>s%<id>s/', path: @endpoint, id: id)
|
|
152
|
+
@session.patch(resource_path, body)
|
|
153
|
+
end
|
|
137
154
|
end
|
|
138
155
|
|
|
139
156
|
# An Account is the representation of a bank account inside a financial
|
|
@@ -154,7 +171,6 @@ module Belvo
|
|
|
154
171
|
body = {
|
|
155
172
|
link: link,
|
|
156
173
|
token: options.token,
|
|
157
|
-
encryption_key: options.encryption_key,
|
|
158
174
|
save_data: options.save_data || true
|
|
159
175
|
}.merge(options)
|
|
160
176
|
body = clean body: body
|
|
@@ -185,7 +201,6 @@ module Belvo
|
|
|
185
201
|
date_to: date_to,
|
|
186
202
|
token: options.token,
|
|
187
203
|
account: options.account,
|
|
188
|
-
encryption_key: options.encryption_key,
|
|
189
204
|
save_data: options.save_data || true
|
|
190
205
|
}.merge(options)
|
|
191
206
|
body = clean body: body
|
|
@@ -211,7 +226,6 @@ module Belvo
|
|
|
211
226
|
body = {
|
|
212
227
|
link: link,
|
|
213
228
|
token: options.token,
|
|
214
|
-
encryption_key: options.encryption_key,
|
|
215
229
|
save_data: options.save_data || true
|
|
216
230
|
}.merge(options)
|
|
217
231
|
body = clean body: body
|
|
@@ -242,7 +256,6 @@ module Belvo
|
|
|
242
256
|
date_to: date_to,
|
|
243
257
|
token: options.token,
|
|
244
258
|
account: options.account,
|
|
245
|
-
encryption_key: options.encryption_key,
|
|
246
259
|
save_data: options.save_data || true
|
|
247
260
|
}.merge(options)
|
|
248
261
|
body = clean body: body
|
|
@@ -272,7 +285,6 @@ module Belvo
|
|
|
272
285
|
year: year,
|
|
273
286
|
month: month,
|
|
274
287
|
token: options.token,
|
|
275
|
-
encryption_key: options.encryption_key,
|
|
276
288
|
save_data: options.save_data || true,
|
|
277
289
|
attach_pdf: options.attach_pdf
|
|
278
290
|
}.merge(options)
|
|
@@ -297,7 +309,6 @@ module Belvo
|
|
|
297
309
|
options = IncomeOptions.from(options)
|
|
298
310
|
body = {
|
|
299
311
|
link: link,
|
|
300
|
-
encryption_key: options.encryption_key,
|
|
301
312
|
save_data: options.save_data || true
|
|
302
313
|
}.merge(options)
|
|
303
314
|
body = clean body: body
|
|
@@ -328,7 +339,6 @@ module Belvo
|
|
|
328
339
|
date_to: date_to,
|
|
329
340
|
type: type,
|
|
330
341
|
token: options.token,
|
|
331
|
-
encryption_key: options.encryption_key,
|
|
332
342
|
save_data: options.save_data || true,
|
|
333
343
|
attach_xml: options.attach_xml
|
|
334
344
|
}.merge(options)
|
|
@@ -355,7 +365,6 @@ module Belvo
|
|
|
355
365
|
body = {
|
|
356
366
|
link: link,
|
|
357
367
|
token: options.token,
|
|
358
|
-
encryption_key: options.encryption_key,
|
|
359
368
|
save_data: options.save_data || true,
|
|
360
369
|
attach_pdf: options.attach_pdf
|
|
361
370
|
}.merge(options)
|
|
@@ -377,6 +386,11 @@ module Belvo
|
|
|
377
386
|
@endpoint = 'tax-returns/'
|
|
378
387
|
end
|
|
379
388
|
|
|
389
|
+
class TaxReturnType
|
|
390
|
+
YEARLY = 'yearly'
|
|
391
|
+
MONTHLY = 'monthly'
|
|
392
|
+
end
|
|
393
|
+
|
|
380
394
|
# Retrieve tax returns information from a specific fiscal link.
|
|
381
395
|
# @param link [String] Link UUID
|
|
382
396
|
# @param year_from [Integer]
|
|
@@ -384,17 +398,22 @@ module Belvo
|
|
|
384
398
|
# @param options [TaxReturnOptions] Configurable properties
|
|
385
399
|
# @return [Hash] created tax returns details
|
|
386
400
|
# @raise [RequestError] If response code is different than 2XX
|
|
387
|
-
def retrieve(link:, year_from
|
|
401
|
+
def retrieve(link:, year_from: nil, year_to: nil, options: nil)
|
|
388
402
|
options = TaxReturnOptions.from(options)
|
|
389
403
|
body = {
|
|
390
404
|
link: link,
|
|
391
|
-
year_from: year_from,
|
|
392
|
-
year_to: year_to,
|
|
393
405
|
token: options.token,
|
|
394
|
-
encryption_key: options.encryption_key,
|
|
395
406
|
save_data: options.save_data || true,
|
|
396
|
-
attach_pdf: options.attach_pdf
|
|
407
|
+
attach_pdf: options.attach_pdf,
|
|
408
|
+
type: options.type
|
|
397
409
|
}.merge(options)
|
|
410
|
+
if options.type == TaxReturnType::MONTHLY
|
|
411
|
+
body[:date_from] = options.date_from
|
|
412
|
+
body[:date_to] = options.date_to
|
|
413
|
+
else
|
|
414
|
+
body[:year_from] = year_from
|
|
415
|
+
body[:year_to] = year_to
|
|
416
|
+
end
|
|
398
417
|
body = clean body: body
|
|
399
418
|
@session.post(@endpoint, body)
|
|
400
419
|
end
|
|
@@ -422,7 +441,6 @@ module Belvo
|
|
|
422
441
|
body = {
|
|
423
442
|
link: link,
|
|
424
443
|
token: options.token,
|
|
425
|
-
encryption_key: options.encryption_key,
|
|
426
444
|
save_data: options.save_data || true,
|
|
427
445
|
attach_pdf: options.attach_pdf
|
|
428
446
|
}.merge(options)
|
|
@@ -456,12 +474,15 @@ module Belvo
|
|
|
456
474
|
def create(options: nil)
|
|
457
475
|
options = WidgetTokenOptions.from(options)
|
|
458
476
|
link_id = options.link
|
|
477
|
+
widget = options.widget
|
|
459
478
|
options.delete('link')
|
|
479
|
+
options.delete('widget')
|
|
460
480
|
body = {
|
|
461
481
|
id: @session.key_id,
|
|
462
482
|
password: @session.key_password,
|
|
463
483
|
scopes: 'read_institutions,write_links,read_links',
|
|
464
|
-
link_id: link_id
|
|
484
|
+
link_id: link_id,
|
|
485
|
+
widget: widget
|
|
465
486
|
}.merge(options)
|
|
466
487
|
body = clean body: body
|
|
467
488
|
@session.post(@endpoint, body)
|
data/lib/belvo/utils.rb
CHANGED
|
@@ -11,3 +11,19 @@ class Utils
|
|
|
11
11
|
Base64.encode64(data)
|
|
12
12
|
end
|
|
13
13
|
end
|
|
14
|
+
|
|
15
|
+
# Class to get the api url given an environment name
|
|
16
|
+
class Environment
|
|
17
|
+
SANDBOX = 'https://sandbox.belvo.com'
|
|
18
|
+
DEVELOPMENT = 'https://development.belvo.com'
|
|
19
|
+
PRODUCTION = 'https://api.belvo.com'
|
|
20
|
+
|
|
21
|
+
def self.get_url(environment)
|
|
22
|
+
nil unless environment
|
|
23
|
+
begin
|
|
24
|
+
const_get environment.upcase
|
|
25
|
+
rescue NameError
|
|
26
|
+
environment
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
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.14.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Belvo Finance S.L.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-
|
|
11
|
+
date: 2021-07-05 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: faraday
|
|
@@ -149,11 +149,13 @@ files:
|
|
|
149
149
|
- ".codeclimate.yml"
|
|
150
150
|
- ".github/ISSUE_TEMPLATE/feature_request.md"
|
|
151
151
|
- ".github/pull_request_template.md"
|
|
152
|
+
- ".github/workflows/danger-pr-reviews.yml"
|
|
152
153
|
- ".gitignore"
|
|
153
154
|
- ".rspec"
|
|
154
155
|
- ".rubocop.yml"
|
|
155
156
|
- ".travis.yml"
|
|
156
157
|
- CODE_OF_CONDUCT.md
|
|
158
|
+
- Dangerfile
|
|
157
159
|
- Gemfile
|
|
158
160
|
- Gemfile.lock
|
|
159
161
|
- LICENSE
|