belvo 0.20.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +19 -3
- data/lib/belvo/http.rb +2 -10
- data/lib/belvo/options.rb +20 -1
- data/lib/belvo/resources.rb +45 -6
- data/lib/belvo/utils.rb +8 -6
- data/lib/belvo/version.rb +1 -1
- data/lib/belvo.rb +7 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 92940ff5820a09ee1a7cd694581a1111f6161fe15ba34481c80b4f36c5dd4bfd
|
4
|
+
data.tar.gz: 6c34e09989c39e0f7e45d569ba359f4e02064b49bede2c8a40c6c4f3fbe71e52
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7dff5481b7fb7e757527821765e8d6da859b1ba4c737288eba95171363f6dfdb8763600e932271a72bbaa9da663f94d41889cb1d59e6aa60aef299103ed0f1c5
|
7
|
+
data.tar.gz: c902eecfffea0a1beaeb4fa968b19aa26b57b5fc319cfc73280401952a3c4abd25870a0ec3707e02c4bf39f127b449c8c663d466bfe3f67699f9269d162019e7
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -53,7 +53,9 @@ begin
|
|
53
53
|
|
54
54
|
belvo.accounts.retrieve(link: link_id)
|
55
55
|
|
56
|
-
|
56
|
+
belvo.accounts.list.each do |item|
|
57
|
+
puts item
|
58
|
+
end
|
57
59
|
rescue Belvo::RequestError => e
|
58
60
|
puts e.status_code
|
59
61
|
puts e.detail
|
@@ -79,17 +81,31 @@ begin
|
|
79
81
|
username: 'janedoe',
|
80
82
|
password: 'super-secret',
|
81
83
|
options: { access_mode: Belvo::Link::AccessMode::SINGLE }
|
82
|
-
|
84
|
+
)
|
83
85
|
|
84
86
|
belvo.accounts.retrieve(link: new_link['id'])
|
85
87
|
|
86
|
-
|
88
|
+
belvo.accounts.list.each do |item|
|
89
|
+
puts item
|
90
|
+
end
|
87
91
|
rescue Belvo::RequestError => e
|
88
92
|
puts e.status_code
|
89
93
|
puts e.detail
|
90
94
|
end
|
91
95
|
```
|
92
96
|
|
97
|
+
## Pagination
|
98
|
+
|
99
|
+
All `list` methods only return the first page of results. If you want to iterate by all pages, you will need to specify the `page` as a parameter:
|
100
|
+
|
101
|
+
```ruby
|
102
|
+
#`api/transactions`
|
103
|
+
...
|
104
|
+
belvo.transactions.list(params: {page: "2"})
|
105
|
+
...
|
106
|
+
```
|
107
|
+
When the result of your call is `nil`, this indicates that there are no more pages to iterate over.
|
108
|
+
|
93
109
|
**Note:** If you create a `Link` without specifying [access_mode](https://docs.belvo.com/#operation/RegisterLink), the SDK will respect the default value from the API.
|
94
110
|
|
95
111
|
## Development
|
data/lib/belvo/http.rb
CHANGED
@@ -91,16 +91,8 @@ module Belvo
|
|
91
91
|
# @raise [RequestError] If response code is different than 2XX
|
92
92
|
def list(path, params: nil)
|
93
93
|
params = {} if params.nil?
|
94
|
-
|
95
|
-
|
96
|
-
response.body['results'].each do |item|
|
97
|
-
yield item if block_given?
|
98
|
-
end
|
99
|
-
|
100
|
-
break unless response.body['next']
|
101
|
-
|
102
|
-
params = Faraday::Utils.parse_query URI(response.body['next']).query
|
103
|
-
end
|
94
|
+
response = get(path, params: params)
|
95
|
+
response.body['results']
|
104
96
|
end
|
105
97
|
|
106
98
|
# Show specific resource details
|
data/lib/belvo/options.rb
CHANGED
@@ -152,9 +152,28 @@ module Belvo
|
|
152
152
|
)
|
153
153
|
end
|
154
154
|
|
155
|
+
# @!class TaxRetentionsOptions < Faraday::Options
|
156
|
+
# Contains configurable properties of a tax retention
|
157
|
+
# @!attribute save_data [rw] Indicates whether or not to persist the
|
158
|
+
# data in Belvo. By default, this is set to `true` and we return a
|
159
|
+
# 201 Created response. When set to `false`, the data won't be persisted
|
160
|
+
# and we return a 200 OK response.
|
161
|
+
# @!attribute attach_xml [rw] When set to `true`, you will receive the XML
|
162
|
+
# tax retention in the response.
|
163
|
+
class TaxRetentionsOptions < Faraday::Options.new(
|
164
|
+
:save_data,
|
165
|
+
:attach_xml,
|
166
|
+
:date_from,
|
167
|
+
:date_to
|
168
|
+
)
|
169
|
+
end
|
170
|
+
|
155
171
|
# @!class TaxStatusOptions < Faraday::Options
|
156
172
|
# Contains configurable properties of a TaxStatus
|
157
|
-
# @!attribute save_data [rw]
|
173
|
+
# @!attribute save_data [rw] Indicates whether or not to persist the data
|
174
|
+
# in Belvo. By default, this is set to `true` and we return a 201 Created
|
175
|
+
# response. When set to `false`, the data won't be persisted and we return
|
176
|
+
# a 200 OK response.
|
158
177
|
# @!attribute token [rw] OTP token required by the institution
|
159
178
|
# @!attribute attach_pdf [rw] Should the PDF file be included in the
|
160
179
|
# response or not.
|
data/lib/belvo/resources.rb
CHANGED
@@ -29,11 +29,7 @@ module Belvo
|
|
29
29
|
# @yield [Hash] Each result to be processed individually.
|
30
30
|
# @raise [RequestError] If response code is different than 2XX
|
31
31
|
def list(params: nil)
|
32
|
-
|
33
|
-
@session.list(@endpoint, params: params) do |item|
|
34
|
-
results.nil? ? yield(item) : results.push(item)
|
35
|
-
end
|
36
|
-
results
|
32
|
+
@session.list(@endpoint, params: params)
|
37
33
|
end
|
38
34
|
|
39
35
|
# Show specific resource details
|
@@ -476,6 +472,48 @@ module Belvo
|
|
476
472
|
end
|
477
473
|
end
|
478
474
|
|
475
|
+
# A tax retention is the amount of money that the payer must deduct from the
|
476
|
+
# total amount of a purchase invoice, according to the regulations of the
|
477
|
+
# fiscal institution.
|
478
|
+
class TaxRetentions < Resource
|
479
|
+
def initialize(session)
|
480
|
+
super(session)
|
481
|
+
@endpoint = 'api/tax-retentions/'
|
482
|
+
end
|
483
|
+
|
484
|
+
class TaxRetentionsType
|
485
|
+
INFLOW = 'inflow'
|
486
|
+
OUTFLOW = 'outflow'
|
487
|
+
end
|
488
|
+
|
489
|
+
# Retrieve tax retentions from a specific fiscal link.
|
490
|
+
# @param link [String] The `link.id` that you want to get information
|
491
|
+
# for (UUID).
|
492
|
+
# @param type [TaxRetentionsType] The type of tax retention in relation to
|
493
|
+
# the invoice (from the perspective of the Link owner). `OUTFLOW` relates
|
494
|
+
# to a tax retention for a sent invoice. `INFLOW` relates to a tax
|
495
|
+
# retention for a received invoice. (inflow or outflow)
|
496
|
+
# @param options [TaxRetentionsOptions] Configurable properties
|
497
|
+
def retrieve(link:, type:, options: nil)
|
498
|
+
options = TaxRetentionsOptions.from(options)
|
499
|
+
body = {
|
500
|
+
link: link,
|
501
|
+
date_from: options.date_from,
|
502
|
+
date_to: options.date_to,
|
503
|
+
save_data: options.save_data,
|
504
|
+
attach_xml: options.attach_xml,
|
505
|
+
type: type
|
506
|
+
}.merge(options)
|
507
|
+
body = clean body: body
|
508
|
+
@session.post(@endpoint, body)
|
509
|
+
end
|
510
|
+
|
511
|
+
def resume(_session_id, _token, _link: nil)
|
512
|
+
raise NotImplementedError \
|
513
|
+
'TaxRetentions does not support resuming a session'
|
514
|
+
end
|
515
|
+
end
|
516
|
+
|
479
517
|
# A Tax status is the representation of the tax situation of a person or a
|
480
518
|
# business to the tax authority in the country.
|
481
519
|
class TaxStatus < Resource
|
@@ -502,7 +540,8 @@ module Belvo
|
|
502
540
|
end
|
503
541
|
|
504
542
|
def resume(_session_id, _token, _link: nil)
|
505
|
-
raise NotImplementedError
|
543
|
+
raise NotImplementedError \
|
544
|
+
'TaxRetentions does not support resuming a session.'
|
506
545
|
end
|
507
546
|
end
|
508
547
|
|
data/lib/belvo/utils.rb
CHANGED
@@ -2,13 +2,15 @@
|
|
2
2
|
|
3
3
|
require 'base64'
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
module Belvo
|
6
|
+
# Class with helper functions
|
7
|
+
class Utils
|
8
|
+
def self.read_file_to_b64(path)
|
9
|
+
return if path.nil? || !File.file?(path)
|
9
10
|
|
10
|
-
|
11
|
-
|
11
|
+
data = File.open(path).read
|
12
|
+
Base64.encode64(data)
|
13
|
+
end
|
12
14
|
end
|
13
15
|
end
|
14
16
|
|
data/lib/belvo/version.rb
CHANGED
data/lib/belvo.rb
CHANGED
@@ -110,7 +110,13 @@ module Belvo
|
|
110
110
|
@tax_status = TaxStatus.new @session
|
111
111
|
end
|
112
112
|
|
113
|
-
# Provides access to
|
113
|
+
# Provides access to the TaxRetentions resource
|
114
|
+
# @return [TaxRetentions]
|
115
|
+
def tax_retentions
|
116
|
+
@tax_retentions = TaxRetentions.new @session
|
117
|
+
end
|
118
|
+
|
119
|
+
# Provides access to the Institutions resource
|
114
120
|
# @return [Institution]
|
115
121
|
def institutions
|
116
122
|
@institutions = Institution.new @session
|
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:
|
4
|
+
version: 1.1.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: 2022-
|
11
|
+
date: 2022-08-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|