belvo 0.12.0 → 0.15.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/README.md +43 -14
- data/lib/belvo.rb +6 -1
- data/lib/belvo/options.rb +11 -25
- data/lib/belvo/resources.rb +37 -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: 6b7f8335b754a94a4223c81da12e6968e3dfe266a39e3b20e10f2d20a129a3dc
|
|
4
|
+
data.tar.gz: 1ac5dc601938bd343f480c391f3951b6e1e8cc2261397c38c540094b6bd78428
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 683c82016ad8b0c264d3c76b9559a432986a639645416f6ee82ff7925810c0a004325ddc880841ff6a4f140a268e6b01863a1a395bf1d790f34b43391871e89d
|
|
7
|
+
data.tar.gz: a4072bb4ffe6d220deefddcebdef857e0e9c9d06cdd0f6255520b5bbea72223e9a4451c0f93c5dbfc4485c9e2f9dbc43723d5916cd304fd63e02e97225310dd8
|
|
@@ -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: 10
|
|
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.15.0)
|
|
5
5
|
faraday
|
|
6
6
|
faraday_middleware
|
|
7
7
|
typhoeus
|
|
@@ -9,9 +9,17 @@ PATH
|
|
|
9
9
|
GEM
|
|
10
10
|
remote: https://rubygems.org/
|
|
11
11
|
specs:
|
|
12
|
-
addressable (2.
|
|
12
|
+
addressable (2.8.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,19 +47,34 @@ 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)
|
|
77
|
+
rchardet (1.8.0)
|
|
42
78
|
rexml (3.2.5)
|
|
43
79
|
rspec (3.10.0)
|
|
44
80
|
rspec-core (~> 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/README.md
CHANGED
|
@@ -33,31 +33,60 @@ Or install it yourself as:
|
|
|
33
33
|
|
|
34
34
|
$ gem install belvo
|
|
35
35
|
|
|
36
|
-
## Usage
|
|
36
|
+
## Usage (create link via widget)
|
|
37
|
+
|
|
38
|
+
When your user successfully links their account using the [Connect Widget](https://developers.belvo.com/docs/connect-widget), your implemented callback funciton will return the `link_id` required to make further API to retrieve information.
|
|
39
|
+
|
|
37
40
|
|
|
38
41
|
```ruby
|
|
39
42
|
require 'belvo'
|
|
40
43
|
|
|
41
44
|
belvo = Belvo::Client.new(
|
|
42
|
-
'
|
|
43
|
-
'
|
|
44
|
-
'
|
|
45
|
+
'your-secret-id',
|
|
46
|
+
'your-secret-password',
|
|
47
|
+
'sandbox'
|
|
45
48
|
)
|
|
46
49
|
|
|
47
50
|
begin
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
# Get the link_id from the result of your widget callback function
|
|
52
|
+
link_id = result_from_callback_function.id
|
|
53
|
+
|
|
54
|
+
belvo.accounts.retrieve(link: link_id)
|
|
55
|
+
|
|
56
|
+
puts belvo.accounts.list
|
|
57
|
+
rescue Belvo::RequestError => e
|
|
58
|
+
puts e.status_code
|
|
59
|
+
puts e.detail
|
|
60
|
+
end
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Usage (create link via SDK)
|
|
54
64
|
|
|
55
|
-
|
|
65
|
+
You can also manually create the link using the SDK. However, for security purposes, we highly recommend, that you use the [Connect Widget](https://developers.belvo.com/docs/connect-widget) to create the link and follow the **Usage (create link via widget)** example.
|
|
56
66
|
|
|
57
|
-
|
|
67
|
+
```ruby
|
|
68
|
+
require 'belvo'
|
|
69
|
+
|
|
70
|
+
belvo = Belvo::Client.new(
|
|
71
|
+
'your-secret-id',
|
|
72
|
+
'your-secret-password',
|
|
73
|
+
'sandbox'
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
begin
|
|
77
|
+
new_link = belvo.links.register( # Creating the link
|
|
78
|
+
institution: 'banamex_mx_retail',
|
|
79
|
+
username: 'janedoe',
|
|
80
|
+
password: 'super-secret',
|
|
81
|
+
options: { access_mode: Belvo::Link::AccessMode::SINGLE }
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
belvo.accounts.retrieve(link: new_link['id'])
|
|
85
|
+
|
|
86
|
+
puts belvo.accounts.list
|
|
58
87
|
rescue Belvo::RequestError => e
|
|
59
|
-
|
|
60
|
-
|
|
88
|
+
puts e.status_code
|
|
89
|
+
puts e.detail
|
|
61
90
|
end
|
|
62
91
|
```
|
|
63
92
|
|
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/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,7 +17,6 @@ module Belvo
|
|
|
18
17
|
:username2,
|
|
19
18
|
:username3,
|
|
20
19
|
:password2,
|
|
21
|
-
:encryption_key,
|
|
22
20
|
:username_type,
|
|
23
21
|
:certificate,
|
|
24
22
|
:private_key,
|
|
@@ -30,11 +28,9 @@ module Belvo
|
|
|
30
28
|
# Contains the configurable properties for an Account
|
|
31
29
|
# @!attribute save_data [rw] Should data be persisted or not.
|
|
32
30
|
# @!attribute token [rw] OTP token required by the institution
|
|
33
|
-
# @!attribute encryption_key [rw] Custom encryption key
|
|
34
31
|
class AccountOptions < Faraday::Options.new(
|
|
35
32
|
:save_data,
|
|
36
|
-
:token
|
|
37
|
-
:encryption_key
|
|
33
|
+
:token
|
|
38
34
|
)
|
|
39
35
|
end
|
|
40
36
|
|
|
@@ -44,12 +40,10 @@ module Belvo
|
|
|
44
40
|
# @!attribute account [rw] Account ID (UUID)
|
|
45
41
|
# @!attribute save_data [rw] Should data be persisted or not.
|
|
46
42
|
# @!attribute token [rw] OTP token required by the institution
|
|
47
|
-
# @!attribute encryption_key [rw] Custom encryption key
|
|
48
43
|
class TransactionOptions < Faraday::Options.new(
|
|
49
44
|
:date_to,
|
|
50
45
|
:account,
|
|
51
46
|
:token,
|
|
52
|
-
:encryption_key,
|
|
53
47
|
:save_data
|
|
54
48
|
)
|
|
55
49
|
end
|
|
@@ -58,8 +52,7 @@ module Belvo
|
|
|
58
52
|
# Contains configurable properties of an Owner
|
|
59
53
|
# @!attribute save_data [rw] Should data be persisted or not.
|
|
60
54
|
# @!attribute token [rw] OTP token required by the institution
|
|
61
|
-
|
|
62
|
-
class OwnerOptions < Faraday::Options.new(:token, :encryption_key, :save_data)
|
|
55
|
+
class OwnerOptions < Faraday::Options.new(:token, :save_data)
|
|
63
56
|
end
|
|
64
57
|
|
|
65
58
|
# @!class BalanceOptions < Faraday::Options
|
|
@@ -68,12 +61,10 @@ module Belvo
|
|
|
68
61
|
# @!attribute account [rw] Account ID (UUID)
|
|
69
62
|
# @!attribute save_data [rw] Should data be persisted or not.
|
|
70
63
|
# @!attribute token [rw] OTP token required by the institution
|
|
71
|
-
# @!attribute encryption_key [rw] Custom encryption key
|
|
72
64
|
class BalanceOptions < Faraday::Options.new(
|
|
73
65
|
:date_to,
|
|
74
66
|
:account,
|
|
75
67
|
:token,
|
|
76
|
-
:encryption_key,
|
|
77
68
|
:save_data
|
|
78
69
|
)
|
|
79
70
|
end
|
|
@@ -82,12 +73,10 @@ module Belvo
|
|
|
82
73
|
# Contains configurable properties of a Statement
|
|
83
74
|
# @!attribute save_data [rw] Should data be persisted or not.
|
|
84
75
|
# @!attribute token [rw] OTP token required by the institution
|
|
85
|
-
# @!attribute encryption_key [rw] Custom encryption key
|
|
86
76
|
# @!attribute attach_pdf [rw] Should the PDF file be included in the
|
|
87
77
|
# response or not.
|
|
88
78
|
class StatementOptions < Faraday::Options.new(
|
|
89
79
|
:token,
|
|
90
|
-
:encryption_key,
|
|
91
80
|
:save_data,
|
|
92
81
|
:attach_pdf
|
|
93
82
|
)
|
|
@@ -96,10 +85,12 @@ module Belvo
|
|
|
96
85
|
# @!class IncomeOptions < Faraday::Options
|
|
97
86
|
# Contains configurable properties of an Income
|
|
98
87
|
# @!attribute save_data [rw] Should data be persisted or not.
|
|
99
|
-
# @!attribute
|
|
88
|
+
# @!attribute date_from [rw] Date string (YYYY-MM-DD)
|
|
89
|
+
# @!attribute date_to [rw] Date string (YYYY-MM-DD)
|
|
100
90
|
class IncomeOptions < Faraday::Options.new(
|
|
101
|
-
:
|
|
102
|
-
:
|
|
91
|
+
:save_data,
|
|
92
|
+
:date_from,
|
|
93
|
+
:date_to
|
|
103
94
|
)
|
|
104
95
|
end
|
|
105
96
|
|
|
@@ -107,13 +98,11 @@ module Belvo
|
|
|
107
98
|
# Contains configurable properties of an Invoice
|
|
108
99
|
# @!attribute save_data [rw] Should data be persisted or not.
|
|
109
100
|
# @!attribute token [rw] OTP token required by the institution
|
|
110
|
-
# @!attribute encryption_key [rw] Custom encryption key
|
|
111
101
|
# @!attribute attach_xml [rw] Should the XML file be included in the
|
|
112
102
|
# response or not.
|
|
113
103
|
class InvoiceOptions < Faraday::Options.new(
|
|
114
104
|
:save_data,
|
|
115
105
|
:token,
|
|
116
|
-
:encryption_key,
|
|
117
106
|
:attach_xml
|
|
118
107
|
)
|
|
119
108
|
end
|
|
@@ -122,12 +111,10 @@ module Belvo
|
|
|
122
111
|
# Contains configurable properties of a TaxComplianceStatus
|
|
123
112
|
# @!attribute save_data [rw] Should data be persisted or not.
|
|
124
113
|
# @!attribute token [rw] OTP token required by the institution
|
|
125
|
-
# @!attribute encryption_key [rw] Custom encryption key
|
|
126
114
|
# @!attribute attach_pdf [rw] Should the PDF file be included in the
|
|
127
115
|
# response or not.
|
|
128
116
|
class TaxComplianceStatusOptions < Faraday::Options.new(
|
|
129
117
|
:token,
|
|
130
|
-
:encryption_key,
|
|
131
118
|
:save_data,
|
|
132
119
|
:attach_pdf
|
|
133
120
|
)
|
|
@@ -137,14 +124,15 @@ module Belvo
|
|
|
137
124
|
# Contains configurable properties of a TaxReturn
|
|
138
125
|
# @!attribute save_data [rw] Should data be persisted or not.
|
|
139
126
|
# @!attribute token [rw] OTP token required by the institution
|
|
140
|
-
# @!attribute encryption_key [rw] Custom encryption key
|
|
141
127
|
# @!attribute attach_pdf [rw] Should the PDF file be included in the
|
|
142
128
|
# response or not.
|
|
143
129
|
class TaxReturnOptions < Faraday::Options.new(
|
|
144
130
|
:token,
|
|
145
|
-
:encryption_key,
|
|
146
131
|
:save_data,
|
|
147
|
-
:attach_pdf
|
|
132
|
+
:attach_pdf,
|
|
133
|
+
:type,
|
|
134
|
+
:date_from,
|
|
135
|
+
:date_to
|
|
148
136
|
)
|
|
149
137
|
end
|
|
150
138
|
|
|
@@ -152,12 +140,10 @@ module Belvo
|
|
|
152
140
|
# Contains configurable properties of a TaxStatus
|
|
153
141
|
# @!attribute save_data [rw] Should data be persisted or not.
|
|
154
142
|
# @!attribute token [rw] OTP token required by the institution
|
|
155
|
-
# @!attribute encryption_key [rw] Custom encryption key
|
|
156
143
|
# @!attribute attach_pdf [rw] Should the PDF file be included in the
|
|
157
144
|
# response or not.
|
|
158
145
|
class TaxStatusOptions < Faraday::Options.new(
|
|
159
146
|
:token,
|
|
160
|
-
:encryption_key,
|
|
161
147
|
:save_data,
|
|
162
148
|
:attach_pdf
|
|
163
149
|
)
|
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,8 +309,9 @@ module Belvo
|
|
|
297
309
|
options = IncomeOptions.from(options)
|
|
298
310
|
body = {
|
|
299
311
|
link: link,
|
|
300
|
-
|
|
301
|
-
|
|
312
|
+
save_data: options.save_data || true,
|
|
313
|
+
date_from: options.date_from,
|
|
314
|
+
date_to: options.date_to
|
|
302
315
|
}.merge(options)
|
|
303
316
|
body = clean body: body
|
|
304
317
|
@session.post(@endpoint, body)
|
|
@@ -328,7 +341,6 @@ module Belvo
|
|
|
328
341
|
date_to: date_to,
|
|
329
342
|
type: type,
|
|
330
343
|
token: options.token,
|
|
331
|
-
encryption_key: options.encryption_key,
|
|
332
344
|
save_data: options.save_data || true,
|
|
333
345
|
attach_xml: options.attach_xml
|
|
334
346
|
}.merge(options)
|
|
@@ -355,7 +367,6 @@ module Belvo
|
|
|
355
367
|
body = {
|
|
356
368
|
link: link,
|
|
357
369
|
token: options.token,
|
|
358
|
-
encryption_key: options.encryption_key,
|
|
359
370
|
save_data: options.save_data || true,
|
|
360
371
|
attach_pdf: options.attach_pdf
|
|
361
372
|
}.merge(options)
|
|
@@ -377,6 +388,11 @@ module Belvo
|
|
|
377
388
|
@endpoint = 'tax-returns/'
|
|
378
389
|
end
|
|
379
390
|
|
|
391
|
+
class TaxReturnType
|
|
392
|
+
YEARLY = 'yearly'
|
|
393
|
+
MONTHLY = 'monthly'
|
|
394
|
+
end
|
|
395
|
+
|
|
380
396
|
# Retrieve tax returns information from a specific fiscal link.
|
|
381
397
|
# @param link [String] Link UUID
|
|
382
398
|
# @param year_from [Integer]
|
|
@@ -384,17 +400,22 @@ module Belvo
|
|
|
384
400
|
# @param options [TaxReturnOptions] Configurable properties
|
|
385
401
|
# @return [Hash] created tax returns details
|
|
386
402
|
# @raise [RequestError] If response code is different than 2XX
|
|
387
|
-
def retrieve(link:, year_from
|
|
403
|
+
def retrieve(link:, year_from: nil, year_to: nil, options: nil)
|
|
388
404
|
options = TaxReturnOptions.from(options)
|
|
389
405
|
body = {
|
|
390
406
|
link: link,
|
|
391
|
-
year_from: year_from,
|
|
392
|
-
year_to: year_to,
|
|
393
407
|
token: options.token,
|
|
394
|
-
encryption_key: options.encryption_key,
|
|
395
408
|
save_data: options.save_data || true,
|
|
396
|
-
attach_pdf: options.attach_pdf
|
|
409
|
+
attach_pdf: options.attach_pdf,
|
|
410
|
+
type: options.type
|
|
397
411
|
}.merge(options)
|
|
412
|
+
if options.type == TaxReturnType::MONTHLY
|
|
413
|
+
body[:date_from] = options.date_from
|
|
414
|
+
body[:date_to] = options.date_to
|
|
415
|
+
else
|
|
416
|
+
body[:year_from] = year_from
|
|
417
|
+
body[:year_to] = year_to
|
|
418
|
+
end
|
|
398
419
|
body = clean body: body
|
|
399
420
|
@session.post(@endpoint, body)
|
|
400
421
|
end
|
|
@@ -422,7 +443,6 @@ module Belvo
|
|
|
422
443
|
body = {
|
|
423
444
|
link: link,
|
|
424
445
|
token: options.token,
|
|
425
|
-
encryption_key: options.encryption_key,
|
|
426
446
|
save_data: options.save_data || true,
|
|
427
447
|
attach_pdf: options.attach_pdf
|
|
428
448
|
}.merge(options)
|
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.15.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-08-13 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
|