starkbank 0.2.1 → 0.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9faf8d2408757d1281ac59d59cba4303a3db835b21382a7a89d02110c5c2ae07
4
- data.tar.gz: d615e724e7e2a51a5ced3b852bc84895b512fdc5b0a1c3fb456455619f1d1744
3
+ metadata.gz: '0509d964f6d6ff483444229021b1ac146d3c27ca7930e1d906fc51ba7ef49541'
4
+ data.tar.gz: f0a14115c5b83db21dffcc339df07038c6ef21234547602e44e825d9c4b6aea4
5
5
  SHA512:
6
- metadata.gz: acbc1fd9c1c9636dff4d50209bc833618fce68e7d32da3b004e965ff4bd6138aa27a464e6e14a6766fe700bca41f4736ddfda58ae7a3d3d49f8e84d0004a2888
7
- data.tar.gz: 8728b2cfb5c1afa974c90f54eb0439d43f21f9e72ab968a715a6dddb8a0262f72d9d0ffeeaf462c837602d4cb6b7c70413770c27624dadb6cdb87fa51def730c
6
+ metadata.gz: d74d8dbc64191c7ad538b0d7529372860cc23cf8b429158d130911dd2e7a568207ccd635c929b0fe106805036110e72e16567686cb4a161c250fcde4d7cf0811
7
+ data.tar.gz: e7737c06154ce9430e4345682fdc7efbffc297e95aa18f6ca6583512a5183dbbbb6ee054a3e1c7a3c3d9834d6fe1efbb3ced9a40c7fdb1dde943cc0422ac5384
@@ -27,6 +27,8 @@ module StarkBank
27
27
  # - fine [float, default 0.0]: Boleto fine for overdue payment in %. ex: 2.5
28
28
  # - interest [float, default 0.0]: Boleto monthly interest for overdue payment in %. ex: 5.2
29
29
  # - overdue_limit [integer, default 59]: limit in days for payment after due date. ex: 7 (max: 59)
30
+ # - receiver_name [string]: receiver (Sacador Avalista) full name. ex: 'Anthony Edward Stark'
31
+ # - receiver_tax_id [string]: receiver (Sacador Avalista) tax ID (CPF or CNPJ) with or without formatting. ex: '01234567890' or '20.018.183/0001-80'
30
32
  # - descriptions [list of dictionaries, default nil]: list of dictionaries with 'text':string and (optional) 'amount':int pairs
31
33
  # - discounts [list of dictionaries, default nil]: list of dictionaries with 'percentage':float and 'date':Date or string pairs
32
34
  # - tags [list of strings]: list of strings for tagging
@@ -39,11 +41,12 @@ module StarkBank
39
41
  # - status [string, default nil]: current Boleto status. ex: 'registered' or 'paid'
40
42
  # - created [DateTime, default nil]: creation datetime for the Boleto. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0)
41
43
  class Boleto < StarkBank::Utils::Resource
42
- attr_reader :amount, :name, :tax_id, :street_line_1, :street_line_2, :district, :city, :state_code, :zip_code, :due, :fine, :interest, :overdue_limit, :tags, :descriptions, :discounts, :id, :fee, :line, :bar_code, :status, :created
44
+ attr_reader :amount, :name, :tax_id, :street_line_1, :street_line_2, :district, :city, :state_code, :zip_code, :due, :fine, :interest, :overdue_limit, :receiver_name, :receiver_tax_id, :tags, :descriptions, :discounts, :id, :fee, :line, :bar_code, :status, :created
43
45
  def initialize(
44
46
  amount:, name:, tax_id:, street_line_1:, street_line_2:, district:, city:, state_code:, zip_code:,
45
- due: nil, fine: nil, interest: nil, overdue_limit: nil, tags: nil, descriptions: nil, discounts: nil,
46
- id: nil, fee: nil, line: nil, bar_code: nil, status: nil, created: nil
47
+ due: nil, fine: nil, interest: nil, overdue_limit: nil, receiver_name: nil, receiver_tax_id: nil,
48
+ tags: nil, descriptions: nil, discounts: nil, id: nil, fee: nil, line: nil, bar_code: nil,
49
+ status: nil, created: nil
47
50
  )
48
51
  super(id)
49
52
  @amount = amount
@@ -59,6 +62,8 @@ module StarkBank
59
62
  @fine = fine
60
63
  @interest = interest
61
64
  @overdue_limit = overdue_limit
65
+ @receiver_name = receiver_name
66
+ @receiver_tax_id = receiver_tax_id
62
67
  @tags = tags
63
68
  @descriptions = descriptions
64
69
  @discounts = discounts
@@ -109,12 +114,13 @@ module StarkBank
109
114
  # - id [string]: object unique id. ex: '5656565656565656'
110
115
  #
111
116
  # ## Parameters (optional):
117
+ # - layout [string]: Layout specification. Available options are "default" and "booklet"
112
118
  # - user [Project object]: Project object. Not necessary if StarkBank.user was set before function call
113
119
  #
114
120
  # ## Return:
115
121
  # - Boleto pdf file
116
- def self.pdf(id, user: nil)
117
- StarkBank::Utils::Rest.get_pdf(id: id, user: user, **resource)
122
+ def self.pdf(id, layout: nil, user: nil)
123
+ StarkBank::Utils::Rest.get_pdf(id: id, layout: layout, user: user, **resource)
118
124
  end
119
125
 
120
126
  # # Retrieve Boletos
@@ -158,7 +164,7 @@ module StarkBank
158
164
  # - user [Project object]: Project object. Not necessary if StarkBank.user was set before function call
159
165
  #
160
166
  # ## Return:
161
- # - deleted Boleto with updated attributes
167
+ # - deleted Boleto object
162
168
  def self.delete(id, user: nil)
163
169
  StarkBank::Utils::Rest.delete_id(id: id, user: user, **resource)
164
170
  end
@@ -181,6 +187,8 @@ module StarkBank
181
187
  fine: json['fine'],
182
188
  interest: json['interest'],
183
189
  overdue_limit: json['overdue_limit'],
190
+ receiver_name: json['receiver_name'],
191
+ receiver_tax_id: json['receiver_tax_id'],
184
192
  tags: json['tags'],
185
193
  descriptions: json['descriptions'],
186
194
  discounts: json['discounts'],
@@ -133,7 +133,7 @@ module StarkBank
133
133
  # Parameters (optional):
134
134
  # - user [Project object]: Project object. Not necessary if StarkBank.user was set before function call
135
135
  # Return:
136
- # - deleted BoletoPayment with updated attributes
136
+ # - deleted BoletoPayment object
137
137
  def self.delete(id, user: nil)
138
138
  StarkBank::Utils::Rest.delete_id(id: id, user: user, **resource)
139
139
  end
@@ -33,14 +33,15 @@ module StarkBank
33
33
  @is_delivered = is_delivered
34
34
  @subscription = subscription
35
35
 
36
- maker = {
36
+ resource = {
37
37
  'transfer': StarkBank::Transfer::Log.resource,
38
38
  'boleto': StarkBank::Boleto::Log.resource,
39
39
  'boleto-payment': StarkBank::BoletoPayment::Log.resource,
40
40
  'utility-payment': StarkBank::UtilityPayment::Log.resource
41
- }[subscription.to_sym][:resource_maker]
41
+ }[subscription.to_sym]
42
42
 
43
- @log = StarkBank::Utils::API.from_api_json(maker, log)
43
+ @log = log
44
+ @log = StarkBank::Utils::API.from_api_json(resource[:resource_maker], log) unless resource.nil?
44
45
  end
45
46
 
46
47
  # # Retrieve a specific notification Event
@@ -96,7 +97,7 @@ module StarkBank
96
97
  # - user [Project object]: Project object. Not necessary if StarkBank.user was set before function call
97
98
  #
98
99
  # ## Return:
99
- # - deleted Event with updated attributes
100
+ # - deleted Event object
100
101
  def self.delete(id, user: nil)
101
102
  StarkBank::Utils::Rest.delete_id(id: id, user: user, **resource)
102
103
  end
data/lib/key.rb CHANGED
@@ -15,7 +15,7 @@ module StarkBank
15
15
  # ## Return:
16
16
  # - private and public key pems
17
17
  def self.create(path = nil)
18
- private_key = PrivateKey.new
18
+ private_key = EllipticCurve::PrivateKey.new
19
19
  public_key = private_key.publicKey
20
20
 
21
21
  private_key_pem = private_key.toPem
@@ -18,5 +18,6 @@ require_relative('event/event')
18
18
  # SDK to facilitate Ruby integrations with Stark Bank
19
19
  module StarkBank
20
20
  @user = nil
21
- class << self; attr_accessor :user; end
21
+ @language = 'en-US'
22
+ class << self; attr_accessor :user, :language; end
22
23
  end
@@ -87,15 +87,16 @@ module StarkBank
87
87
  # - limit [integer, default nil]: maximum number of objects to be retrieved. Unlimited if nil. ex: 35
88
88
  # - after [Date, DateTime, Time or string, default nil] date filter for objects created only after specified date. ex: Date.new(2020, 3, 10)
89
89
  # - before [Date, DateTime, Time or string, default nil] date filter for objects created only before specified date. ex: Date.new(2020, 3, 10)
90
+ # - tags [list of strings, default nil]: tags to filter retrieved objects. ex: ['tony', 'stark']
90
91
  # - external_ids [list of strings, default nil]: list of external ids to filter retrieved objects. ex: ['5656565656565656', '4545454545454545']
91
92
  # - user [Project object, default nil]: Project object. Not necessary if StarkBank.user was set before function call
92
93
  #
93
94
  # ## Return:
94
95
  # - generator of Transaction objects with updated attributes
95
- def self.query(limit: nil, after: nil, before: nil, external_ids: nil, user: nil)
96
+ def self.query(limit: nil, after: nil, before: nil, tags: nil, external_ids: nil, user: nil)
96
97
  after = StarkBank::Utils::Checks.check_date(after)
97
98
  before = StarkBank::Utils::Checks.check_date(before)
98
- StarkBank::Utils::Rest.get_list(user: user, limit: limit, after: after, before: before, external_ids: external_ids, **resource)
99
+ StarkBank::Utils::Rest.get_list(user: user, limit: limit, after: after, before: before, tags: tags, external_ids: external_ids, **resource)
99
100
  end
100
101
 
101
102
  def self.resource
@@ -21,6 +21,7 @@ module StarkBank
21
21
  #
22
22
  # ## Parameters (optional):
23
23
  # - tags [list of strings]: list of strings for reference when searching for transfers. ex: ['employees', 'monthly']
24
+ # - scheduled [string, default now]: datetime when the transfer will be processed. May be pushed to next business day if necessary. ex: DateTime.new(2020, 3, 11, 8, 0, 0, 0)
24
25
  #
25
26
  # ## Attributes (return-only):
26
27
  # - id [string, default nil]: unique id returned when Transfer is created. ex: '5656565656565656'
@@ -30,8 +31,8 @@ module StarkBank
30
31
  # - created [DateTime, default nil]: creation datetime for the transfer. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0)
31
32
  # - updated [DateTime, default nil]: latest update datetime for the transfer. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0)
32
33
  class Transfer < StarkBank::Utils::Resource
33
- attr_reader :amount, :name, :tax_id, :bank_code, :branch_code, :account_number, :transaction_ids, :fee, :tags, :status, :id, :created, :updated
34
- def initialize(amount:, name:, tax_id:, bank_code:, branch_code:, account_number:, transaction_ids: nil, fee: nil, tags: nil, status: nil, id: nil, created: nil, updated: nil)
34
+ attr_reader :amount, :name, :tax_id, :bank_code, :branch_code, :account_number, :scheduled, :transaction_ids, :fee, :tags, :status, :id, :created, :updated
35
+ def initialize(amount:, name:, tax_id:, bank_code:, branch_code:, account_number:, scheduled: nil, transaction_ids: nil, fee: nil, tags: nil, status: nil, id: nil, created: nil, updated: nil)
35
36
  super(id)
36
37
  @amount = amount
37
38
  @name = name
@@ -39,6 +40,7 @@ module StarkBank
39
40
  @bank_code = bank_code
40
41
  @branch_code = branch_code
41
42
  @account_number = account_number
43
+ @scheduled = StarkBank::Utils::Checks.check_datetime(scheduled)
42
44
  @transaction_ids = transaction_ids
43
45
  @fee = fee
44
46
  @tags = tags
@@ -79,6 +81,22 @@ module StarkBank
79
81
  StarkBank::Utils::Rest.get_id(id: id, user: user, **resource)
80
82
  end
81
83
 
84
+ # # Delete a Transfer entity
85
+ #
86
+ # Delete a Transfer entity previously created in the Stark Bank API
87
+ #
88
+ # ## Parameters (required):
89
+ # - id [string]: Transfer unique id. ex: '5656565656565656'
90
+ #
91
+ # ## Parameters (optional):
92
+ # - user [Project object]: Project object. Not necessary if StarkBank.user was set before function call
93
+ #
94
+ # ## Return:
95
+ # - deleted Transfer object
96
+ def self.delete(id, user: nil)
97
+ StarkBank::Utils::Rest.delete_id(id: id, user: user, **resource)
98
+ end
99
+
82
100
  # # Retrieve a specific Transfer pdf file
83
101
  #
84
102
  # Receive a single Transfer pdf receipt file generated in the Stark Bank API by passing its id.
@@ -106,12 +124,13 @@ module StarkBank
106
124
  # - before [Date, DateTime, Time or string, default nil] date filter for objects created or updated only before specified date. ex: Date.new(2020, 3, 10)
107
125
  # - transactionIds [list of strings, default nil]: list of ids to filter retrieved objects. ex: ['5656565656565656', '4545454545454545']
108
126
  # - status [string, default nil]: filter for status of retrieved objects. ex: 'success' or 'failed'
127
+ # - tax_id [string, default nil]: filter for transfers sent to the specified tax ID. ex: "012.345.678-90"
109
128
  # - tags [list of strings, default nil]: tags to filter retrieved objects. ex: ['tony', 'stark']
110
129
  # - user [Project object, default nil]: Project object. Not necessary if StarkBank.user was set before function call
111
130
  #
112
131
  # ## Return:
113
132
  # - generator of Transfer objects with updated attributes
114
- def self.query(limit: nil, after: nil, before: nil, transaction_ids: nil, status: nil, sort: nil, tags: nil, user: nil)
133
+ def self.query(limit: nil, after: nil, before: nil, transaction_ids: nil, status: nil, tax_id: nil, sort: nil, tags: nil, user: nil)
115
134
  after = StarkBank::Utils::Checks.check_date(after)
116
135
  before = StarkBank::Utils::Checks.check_date(before)
117
136
  StarkBank::Utils::Rest.get_list(
@@ -120,6 +139,7 @@ module StarkBank
120
139
  before: before,
121
140
  transaction_ids: transaction_ids,
122
141
  status: status,
142
+ tax_id: tax_id,
123
143
  sort: sort,
124
144
  tags: tags,
125
145
  user: user,
@@ -139,6 +159,7 @@ module StarkBank
139
159
  bank_code: json['bank_code'],
140
160
  branch_code: json['branch_code'],
141
161
  account_number: json['account_number'],
162
+ scheduled: json['scheduled'],
142
163
  transaction_ids: json['transaction_ids'],
143
164
  fee: json['fee'],
144
165
  tags: json['tags'],
@@ -2,12 +2,12 @@
2
2
 
3
3
  require('starkbank-ecdsa')
4
4
  require_relative('../utils/resource')
5
- require_relative('../utils/checks')
6
5
 
7
6
  module StarkBank
8
7
  class User < StarkBank::Utils::Resource
9
8
  attr_reader :pem, :environment
10
9
  def initialize(environment, id, private_key)
10
+ require_relative('../utils/checks')
11
11
  super(id)
12
12
  @pem = StarkBank::Utils::Checks.check_private_key(private_key)
13
13
  @environment = StarkBank::Utils::Checks.check_environment(environment)
@@ -133,7 +133,7 @@ module StarkBank
133
133
  # - user [Project object]: Project object. Not necessary if StarkBank.user was set before function call
134
134
  #
135
135
  # ## Return:
136
- # - deleted UtilityPayment with updated attributes
136
+ # - deleted UtilityPayment object
137
137
  def self.delete(id, user: nil)
138
138
  StarkBank::Utils::Rest.delete_id(id: id, user: user, **resource)
139
139
  end
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require('starkbank-ecdsa')
4
3
  require('date')
5
- require_relative('../user/user')
4
+ require('starkbank-ecdsa')
6
5
  require_relative('environment')
6
+ require_relative('../user/user')
7
7
 
8
8
  module StarkBank
9
9
  module Utils
@@ -17,6 +17,14 @@ module StarkBank
17
17
  user
18
18
  end
19
19
 
20
+ def self.check_language
21
+ language = StarkBank.language
22
+ accepted_languages = %w[en-US pt-BR]
23
+ raise(ArgumentError, "Select a valid language: #{accepted_languages.join(', ')}") unless accepted_languages.include?(language)
24
+
25
+ language
26
+ end
27
+
20
28
  def self.check_environment(environment)
21
29
  environments = StarkBank::Utils::Environment.constants(false).map { |c| StarkBank::Utils::Environment.const_get(c) }
22
30
  raise(ArgumentError, "Select a valid environment: #{environments.join(', ')}") unless environments.include?(environment)
@@ -24,6 +24,7 @@ module StarkBank
24
24
 
25
25
  def self.fetch(method:, path:, payload: nil, query: nil, user: nil)
26
26
  user = Checks.check_user(user)
27
+ language = Checks.check_language
27
28
 
28
29
  base_url = {
29
30
  Environment::PRODUCTION => 'https://api.starkbank.com/',
@@ -60,7 +61,8 @@ module StarkBank
60
61
  req['Access-Time'] = access_time
61
62
  req['Access-Signature'] = signature
62
63
  req['Content-Type'] = 'application/json'
63
- req['User-Agent'] = "Ruby-#{RUBY_VERSION}-SDK-0.2.1"
64
+ req['User-Agent'] = "Ruby-#{RUBY_VERSION}-SDK-0.5.0"
65
+ req['Accept-Language'] = language
64
66
 
65
67
  request = Net::HTTP.start(uri.hostname, use_ssl: true) { |http| http.request(req) }
66
68
 
@@ -47,10 +47,11 @@ module StarkBank
47
47
  StarkBank::Utils::API.from_api_json(resource_maker, entity)
48
48
  end
49
49
 
50
- def self.get_pdf(resource_name:, resource_maker:, id:, user: nil)
50
+ def self.get_pdf(resource_name:, resource_maker:, id:, user: nil, **query)
51
51
  StarkBank::Utils::Request.fetch(
52
52
  method: 'GET',
53
53
  path: "#{StarkBank::Utils::API.endpoint(resource_name)}/#{id}/pdf",
54
+ query: StarkBank::Utils::API.cast_json_to_api_format(query),
54
55
  user: user
55
56
  ).content
56
57
  end
@@ -83,7 +83,7 @@ module StarkBank
83
83
  # - user [Project object]: Project object. Not necessary if StarkBank.user was set before function call
84
84
  #
85
85
  # ## Return:
86
- # - deleted Webhook with updated attributes
86
+ # - deleted Webhook object
87
87
  def self.delete(id, user: nil)
88
88
  StarkBank::Utils::Rest.delete_id(id: id, user: user, **resource)
89
89
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: starkbank
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - starkbank
@@ -16,28 +16,56 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.0.2
19
+ version: 0.0.5
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.0.2
26
+ version: 0.0.5
27
27
  - !ruby/object:Gem::Dependency
28
- name: rspec
28
+ name: minitest
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '3.0'
33
+ version: 5.14.1
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '3.0'
40
+ version: 5.14.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '13.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '13.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rubocop
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.81'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.81'
41
69
  description:
42
70
  email:
43
71
  executables: []
@@ -89,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
89
117
  - !ruby/object:Gem::Version
90
118
  version: '0'
91
119
  requirements: []
92
- rubygems_version: 3.0.6
120
+ rubygems_version: 3.1.4
93
121
  signing_key:
94
122
  specification_version: 4
95
123
  summary: SDK to facilitate Ruby integrations with Stark Bank