belvo 0.10.0 → 0.14.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|