belvo 0.9.0 → 0.13.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6150c59072311f999fdf0934649e9c80e5ce536722965f14f6e8f65d36e0c22d
4
- data.tar.gz: cb5f4b3f89834b67f0b263e2ac4155aec22ef660557013fc4226abf832a77273
3
+ metadata.gz: 426490295ec3ff52627ef0cc1e70a27c418837827947da27e416ccadaa7214ee
4
+ data.tar.gz: 92630f9d7c9a72dc57d7c1677edb1f1f90bde1442ed787ab5a375d5d8b6871e2
5
5
  SHA512:
6
- metadata.gz: c71e72f9a50de5f5996102a9f3259d46265a5d114533d541c18444be77f528f0dc976ef099094155e00dcd29ecc849408f1e2bc927484c6d2e3636e942d90b3c
7
- data.tar.gz: aceb91b3c249d0356fedabb964b8e0f35f11cd76325df175aa266cd140d261ae751caf1d84559897d07f9b208700f798e87becf8ddbe1a8622a66e3f198437ac
6
+ metadata.gz: 58500920831162b704712f0d44e949a3502c0dafe0cd58eb080522c15302a28ec1b2761d2d72058ca1f5e3777da5f75bd629001d72ed70b7a682b65c2037c18f
7
+ data.tar.gz: ff5c028732ffce74c00630c7e2bb22f38eb3a7e602ecb55b31578ee4eba975e341f5be29d45174575dbd37884304281f73ef9cdc55aed8aa3085aadea31fc7cd
@@ -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.9.0)
4
+ belvo (0.13.1)
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
- rexml (3.2.4)
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
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2020 Belvo
3
+ Copyright (c) 2020 Belvo Technologies Inc.
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
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/http.rb CHANGED
@@ -99,8 +99,7 @@ module Belvo
99
99
 
100
100
  break unless response.body['next']
101
101
 
102
- path = response.body['next']
103
- params = nil
102
+ params = Faraday::Utils.parse_query URI(response.body['next']).query
104
103
  end
105
104
  end
106
105
 
data/lib/belvo/options.rb CHANGED
@@ -21,7 +21,8 @@ module Belvo
21
21
  :encryption_key,
22
22
  :username_type,
23
23
  :certificate,
24
- :private_key
24
+ :private_key,
25
+ :external_id
25
26
  )
26
27
  end
27
28
 
@@ -143,7 +144,10 @@ module Belvo
143
144
  :token,
144
145
  :encryption_key,
145
146
  :save_data,
146
- :attach_pdf
147
+ :attach_pdf,
148
+ :type,
149
+ :date_from,
150
+ :date_to
147
151
  )
148
152
  end
149
153
 
@@ -165,9 +169,11 @@ module Belvo
165
169
  # Contains configurable properties of a WidgetToken
166
170
  # @!attribute scopes [rw] Should have WidgetToken's permssions.
167
171
  # @!attribute link [rw] Should the WidgetToken be tied to a specific link.
172
+ # @!attribute widget [rw] Should have the Widget branding params.
168
173
  class WidgetTokenOptions < Faraday::Options.new(
169
174
  :scopes,
170
- :link
175
+ :link,
176
+ :widget
171
177
  )
172
178
  end
173
179
  end
@@ -134,6 +134,24 @@ module Belvo
134
134
  }
135
135
  @session.token(@endpoint, id, body)
136
136
  end
137
+
138
+ # Patch an existing link
139
+ # @param id [String] Link UUID
140
+ # @param options [LinkOptions] Configurable properties
141
+ # @return [Hash] created link details
142
+ # @raise [RequestError] If response code is different than 2XX
143
+ def patch(
144
+ id:,
145
+ options: nil
146
+ )
147
+ options = LinkOptions.from(options)
148
+ body = {
149
+ access_mode: options.access_mode
150
+ }.merge(options)
151
+ body = clean body: body
152
+ resource_path = format('%<path>s%<id>s/', path: @endpoint, id: id)
153
+ @session.patch(resource_path, body)
154
+ end
137
155
  end
138
156
 
139
157
  # An Account is the representation of a bank account inside a financial
@@ -377,6 +395,11 @@ module Belvo
377
395
  @endpoint = 'tax-returns/'
378
396
  end
379
397
 
398
+ class TaxReturnType
399
+ YEARLY = 'yearly'
400
+ MONTHLY = 'monthly'
401
+ end
402
+
380
403
  # Retrieve tax returns information from a specific fiscal link.
381
404
  # @param link [String] Link UUID
382
405
  # @param year_from [Integer]
@@ -384,17 +407,23 @@ module Belvo
384
407
  # @param options [TaxReturnOptions] Configurable properties
385
408
  # @return [Hash] created tax returns details
386
409
  # @raise [RequestError] If response code is different than 2XX
387
- def retrieve(link:, year_from:, year_to:, options: nil)
410
+ def retrieve(link:, year_from: nil, year_to: nil, options: nil)
388
411
  options = TaxReturnOptions.from(options)
389
412
  body = {
390
413
  link: link,
391
- year_from: year_from,
392
- year_to: year_to,
393
414
  token: options.token,
394
415
  encryption_key: options.encryption_key,
395
416
  save_data: options.save_data || true,
396
- attach_pdf: options.attach_pdf
417
+ attach_pdf: options.attach_pdf,
418
+ type: options.type
397
419
  }.merge(options)
420
+ if options.type == TaxReturnType::MONTHLY
421
+ body[:date_from] = options.date_from
422
+ body[:date_to] = options.date_to
423
+ else
424
+ body[:year_from] = year_from
425
+ body[:year_to] = year_to
426
+ end
398
427
  body = clean body: body
399
428
  @session.post(@endpoint, body)
400
429
  end
@@ -456,12 +485,15 @@ module Belvo
456
485
  def create(options: nil)
457
486
  options = WidgetTokenOptions.from(options)
458
487
  link_id = options.link
488
+ widget = options.widget
459
489
  options.delete('link')
490
+ options.delete('widget')
460
491
  body = {
461
492
  id: @session.key_id,
462
493
  password: @session.key_password,
463
- scopes: 'read_institutions,write_links,read_links,delete_links',
464
- link_id: link_id
494
+ scopes: 'read_institutions,write_links,read_links',
495
+ link_id: link_id,
496
+ widget: widget
465
497
  }.merge(options)
466
498
  body = clean body: body
467
499
  @session.post(@endpoint, body)
data/lib/belvo/version.rb CHANGED
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Belvo
4
4
  # belvo-ruby current version
5
- VERSION = '0.9.0'
5
+ VERSION = '0.13.1'
6
6
  end
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.9.0
4
+ version: 0.13.1
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-02-16 00:00:00.000000000 Z
11
+ date: 2021-06-23 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