boletosimples 1.0.2 → 2.0.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.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +18 -0
  3. data/README.md +11 -8
  4. data/lib/boletosimples/configuration.rb +10 -4
  5. data/lib/boletosimples/middlewares/debug.rb +30 -0
  6. data/lib/boletosimples/response_error.rb +2 -2
  7. data/lib/boletosimples/version.rb +1 -1
  8. data/lib/boletosimples.rb +1 -0
  9. data/spec/boletosimples/configuration_spec.rb +3 -3
  10. data/spec/boletosimples/resources/bank_billet_spec.rb +2 -2
  11. data/spec/boletosimples/resources/customer_spec.rb +9 -4
  12. data/spec/boletosimples/resources/customer_subscription_spec.rb +1 -1
  13. data/spec/boletosimples/resources/installment_spec.rb +1 -1
  14. data/spec/fixtures/vcr_cassettes/last_request/bank_billets.yml +386 -520
  15. data/spec/fixtures/vcr_cassettes/resources/bank_billet/all.yml +78 -522
  16. data/spec/fixtures/vcr_cassettes/resources/bank_billet/cancel/success.yml +30 -12
  17. data/spec/fixtures/vcr_cassettes/resources/bank_billet/create/invalid_params.yml +32 -16
  18. data/spec/fixtures/vcr_cassettes/resources/bank_billet/create/invalid_root.yml +31 -15
  19. data/spec/fixtures/vcr_cassettes/resources/bank_billet/create/valid.yml +42 -28
  20. data/spec/fixtures/vcr_cassettes/resources/bank_billet/duplicate/success.yml +41 -27
  21. data/spec/fixtures/vcr_cassettes/resources/bank_billet/find.yml +46 -31
  22. data/spec/fixtures/vcr_cassettes/resources/bank_billet_account/all.yml +47 -103
  23. data/spec/fixtures/vcr_cassettes/resources/bank_billet_account/create/invalid_params.yml +31 -15
  24. data/spec/fixtures/vcr_cassettes/resources/bank_billet_account/create/invalid_root.yml +31 -15
  25. data/spec/fixtures/vcr_cassettes/resources/bank_billet_account/create/valid.yml +35 -19
  26. data/spec/fixtures/vcr_cassettes/resources/bank_billet_account/find.yml +35 -19
  27. data/spec/fixtures/vcr_cassettes/resources/bank_billet_discharge/all.yml +35 -41
  28. data/spec/fixtures/vcr_cassettes/resources/bank_billet_payment/all.yml +73 -72
  29. data/spec/fixtures/vcr_cassettes/resources/bank_billet_remittance/all.yml +39 -70
  30. data/spec/fixtures/vcr_cassettes/resources/customer/all.yml +111 -56
  31. data/spec/fixtures/vcr_cassettes/resources/customer/create/invalid_params.yml +35 -19
  32. data/spec/fixtures/vcr_cassettes/resources/customer/create/invalid_root.yml +35 -16
  33. data/spec/fixtures/vcr_cassettes/resources/customer/create/valid.yml +37 -21
  34. data/spec/fixtures/vcr_cassettes/resources/customer/find.yml +36 -20
  35. data/spec/fixtures/vcr_cassettes/resources/customer_import/all.yml +34 -18
  36. data/spec/fixtures/vcr_cassettes/resources/customer_import/create/invalid_params.yml +31 -15
  37. data/spec/fixtures/vcr_cassettes/resources/customer_import/create/invalid_root.yml +31 -15
  38. data/spec/fixtures/vcr_cassettes/resources/customer_import/create/valid.yml +36 -20
  39. data/spec/fixtures/vcr_cassettes/resources/customer_import/find.yml +34 -18
  40. data/spec/fixtures/vcr_cassettes/resources/customer_subscription/all.yml +35 -71
  41. data/spec/fixtures/vcr_cassettes/resources/customer_subscription/create/invalid_params.yml +32 -16
  42. data/spec/fixtures/vcr_cassettes/resources/customer_subscription/create/invalid_root.yml +31 -15
  43. data/spec/fixtures/vcr_cassettes/resources/customer_subscription/create/valid.yml +35 -19
  44. data/spec/fixtures/vcr_cassettes/resources/customer_subscription/find.yml +36 -20
  45. data/spec/fixtures/vcr_cassettes/resources/customer_subscription/next_charge.yml +36 -20
  46. data/spec/fixtures/vcr_cassettes/resources/customer_subscription_import/all.yml +34 -19
  47. data/spec/fixtures/vcr_cassettes/resources/customer_subscription_import/create/invalid_params.yml +31 -15
  48. data/spec/fixtures/vcr_cassettes/resources/customer_subscription_import/create/invalid_root.yml +31 -15
  49. data/spec/fixtures/vcr_cassettes/resources/customer_subscription_import/create/valid.yml +36 -20
  50. data/spec/fixtures/vcr_cassettes/resources/customer_subscription_import/find.yml +34 -18
  51. data/spec/fixtures/vcr_cassettes/resources/discharge/all.yml +37 -39
  52. data/spec/fixtures/vcr_cassettes/resources/discharge/create/invalid_params.yml +31 -15
  53. data/spec/fixtures/vcr_cassettes/resources/discharge/create/invalid_root.yml +31 -15
  54. data/spec/fixtures/vcr_cassettes/resources/discharge/create/valid.yml +37 -21
  55. data/spec/fixtures/vcr_cassettes/resources/discharge/find.yml +36 -18
  56. data/spec/fixtures/vcr_cassettes/resources/email_delivery/all.yml +1 -1
  57. data/spec/fixtures/vcr_cassettes/resources/event/all.yml +267 -432
  58. data/spec/fixtures/vcr_cassettes/resources/installment/all.yml +71 -375
  59. data/spec/fixtures/vcr_cassettes/resources/installment/create/invalid_params.yml +32 -16
  60. data/spec/fixtures/vcr_cassettes/resources/installment/create/invalid_root.yml +31 -15
  61. data/spec/fixtures/vcr_cassettes/resources/installment/create/valid.yml +35 -19
  62. data/spec/fixtures/vcr_cassettes/resources/installment/find.yml +59 -19
  63. data/spec/fixtures/vcr_cassettes/resources/remittance/all.yml +82 -81
  64. data/spec/fixtures/vcr_cassettes/resources/sns_delivery/all.yml +31 -15
  65. data/spec/fixtures/vcr_cassettes/resources/transaction/all.yml +72 -71
  66. data/spec/fixtures/vcr_cassettes/resources/web_hook/all.yml +33 -17
  67. data/spec/fixtures/vcr_cassettes/resources/webhook_delivery/all.yml +2657 -1206
  68. metadata +6 -186
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a50336e111c9ed876ff2fd2c6821a2b358c47b77d1cd9fc536d37127f82f0b31
4
- data.tar.gz: bda195f137e393e9e9fa4dcb0c937d72ee4bc2cae0b46fbb3cc3559532852500
3
+ metadata.gz: 45f7d3c3d88c50c61728838d4c3b1e3664c8dd555cadb1d57379220d51aaba9a
4
+ data.tar.gz: ea7d7fc35cb62433fc8fb7da44d01ff29d1a340f26c9f882c1ad91c4e3687b37
5
5
  SHA512:
6
- metadata.gz: f0d7bb571f7cfc0364402d082a6ddf48ae476e11d9fb320ed3682b4dd198a94c1924d6e87c935fb78c94cfa6bdb8fd922c665be6207df22eb161a02cc854e3eb
7
- data.tar.gz: e9b0a0dfe9092bc01d4b8bf43ef9f1f38b2a56f65dcb27a901fc9438c3b1b20a40dcf07c065f00c70ac0db2cf20f6d9d12ebbde5b01c464f758e7a7ed9fa763f
6
+ metadata.gz: 3d22dd9edf36f28e3e0caf282a7ce20fc75a4652cdbe1270f66708912f17b35b6a6e17c18c9aac1f3c38f7c8e8de08b4951f9338e5828a158664731ce4a49c35
7
+ data.tar.gz: 3b3f5acf48399f3bf6964d1bd91c3208900fbc295f00b1755bf38435b4f6a1630e9247c84340eead8adef2b75ccc527bfccb57b8b8ea561d3a3337fa4a4ad1fe
data/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.0
4
+
5
+ ### Changes
6
+
7
+ - Update URLs based on new API: https://developers.kobana.com.br/reference/endpoints-1
8
+
9
+ ## 1.0.4
10
+
11
+ ### Changes
12
+
13
+ - Fix cache
14
+
15
+ ## 1.0.3
16
+
17
+ ### Changes
18
+
19
+ - Add debug option
20
+
3
21
  ## 1.0.0
4
22
 
5
23
  ### Breaking changes
data/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  [gem]: https://rubygems.org/gems/boletosimples
7
7
 
8
- Biblioteca Ruby para acessar informações do [Boleto Simples](http://boletosimples.com.br) através da [API](http://api.boletosimples.com.br).
8
+ Biblioteca Ruby para acessar informações da [Kobana](https://www.kobana.com.br) através da [API](https://api.kobana.com.br).
9
9
 
10
10
  ## Instalação
11
11
 
@@ -23,17 +23,18 @@ Ou instale você mesmo:
23
23
 
24
24
  ## Configuração
25
25
 
26
- Saiba mais sobre o [Token de API ](https://api.boletosimples.com.br/authentication/token/)
26
+ Saiba mais sobre o [Token de API ](https://developers.kobana.com.br/reference/token-de-acesso)
27
27
 
28
28
  ```ruby
29
29
  require 'boletosimples'
30
30
 
31
31
  BoletoSimples.configure do |c|
32
32
  c.environment = :production # defaut :sandbox
33
- # production - https://boletosimples.com.br/conta/api/tokens
34
- # sandbox - https://sandbox.boletosimples.com.br/conta/api/tokens
33
+ # production - https://app.kobana.com.br/conta/api/tokens
34
+ # sandbox - https://app-sandbox.kobana.com.br/conta/api/tokens
35
35
  c.api_token = 'api-token'
36
36
  c.user_agent = 'email@minhaempresa.com.br' #Colocar um e-mail válido para contatos técnicos relacionado ao uso da API.
37
+ # c.debug = true
37
38
  end
38
39
  ```
39
40
 
@@ -44,11 +45,12 @@ Você também pode configurar as variáveis de ambiente a seguir e não será ne
44
45
  ```bash
45
46
  ENV['BOLETOSIMPLES_ENV']
46
47
  ENV['BOLETOSIMPLES_API_TOKEN']
48
+ ENV['BOLETOSIMPLES_DEBUG']
47
49
  ```
48
50
 
49
51
  ### Configurando cache
50
52
 
51
- É altamente recomendável utilizar o cache para evitar chegar no [limite de requisições](http://api.boletosimples.com.br/#limite-de-requisicoes)
53
+ É altamente recomendável utilizar o cache para evitar chegar no [limite de requisições](https://developers.kobana.com.br/reference/limite-de-requisições)
52
54
 
53
55
  Para isso recomendamos a utilização da gem [Dalli](https://github.com/mperham/dalli)
54
56
 
@@ -58,7 +60,9 @@ Exemplo:
58
60
  require 'dalli'
59
61
 
60
62
  BoletoSimples.configure do |c|
61
- c.cache = ActiveSupport::Cache.lookup_store(:dalli_store, ['localhost:11211'], namespace: 'boletosimples_client', compress: true)
63
+ c.cache = ActiveSupport::Cache.lookup_store(:mem_cache_store, ['localhost:11211'],
64
+ namespace: 'boletosimples_client',
65
+ compress: true)
62
66
  end
63
67
  ```
64
68
 
@@ -109,8 +113,7 @@ Exemplo:
109
113
  end
110
114
 
111
115
  # Cancelar um boleto
112
- @bank_billet = BoletoSimples::BankBillet.find(1)
113
- @bank_billet.cancel
116
+ @bank_billet = BoletoSimples::BankBillet.cancel(id: 1)
114
117
 
115
118
  ```
116
119
 
@@ -2,11 +2,11 @@
2
2
 
3
3
  module BoletoSimples
4
4
  class Configuration
5
- attr_accessor :environment, :cache, :user_agent, :api_token
5
+ attr_accessor :environment, :cache, :user_agent, :api_token, :debug
6
6
 
7
7
  BASE_URI = {
8
- sandbox: 'https://sandbox.boletosimples.com.br/api/v1',
9
- production: 'https://boletosimples.com.br/api/v1',
8
+ sandbox: 'https://api-sandbox.kobana.com.br/v1',
9
+ production: 'https://api.kobana.com.br/v1',
10
10
  development: 'http://localhost:5000/api/v1'
11
11
  }.freeze
12
12
 
@@ -15,6 +15,7 @@ module BoletoSimples
15
15
  @api_token = ENV['BOLETOSIMPLES_API_TOKEN']
16
16
  @user_agent = ENV['BOLETOSIMPLES_USER_AGENT']
17
17
  @cache = nil
18
+ @debug = ENV['BOLETOSIMPLES_DEBUG']
18
19
  end
19
20
 
20
21
  def base_uri
@@ -25,6 +26,10 @@ module BoletoSimples
25
26
  !@api_token.nil?
26
27
  end
27
28
 
29
+ def debug?
30
+ !@debug.nil?
31
+ end
32
+
28
33
  def setup_her
29
34
  Her::API.setup url: base_uri do |c|
30
35
  # Request
@@ -33,9 +38,10 @@ module BoletoSimples
33
38
  c.use Faraday::Request::Multipart
34
39
  c.use FaradayMiddleware::EncodeJson
35
40
  c.use Her::Middleware::AcceptJSON
36
- c.use Faraday::HttpCache, store: cache unless cache.nil?
41
+ c.use Faraday::HttpCache, store: cache, serializer: Marshal unless cache.nil?
37
42
 
38
43
  # Response
44
+ c.use BoletoSimples::Middleware::Debug if debug?
39
45
  c.use BoletoSimples::Middleware::LastRequest
40
46
  c.use BoletoSimples::Middleware::RaiseError
41
47
  c.use Her::Middleware::DefaultParseJSON
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BoletoSimples
4
+ module Middleware
5
+ class Debug < Faraday::Response::Middleware
6
+ def initialize(app, logger = nil)
7
+ super(app)
8
+ @logger = logger || begin
9
+ require 'logger'
10
+ ::Logger.new($stdout)
11
+ end
12
+ end
13
+
14
+ def on_complete(env)
15
+ @logger.info "\n::#{env[:method].upcase} #{env[:url]}"
16
+ @logger.info ' Request'
17
+ env[:request_headers].each do |key, value|
18
+ @logger.info " -- #{key}: #{value}"
19
+ end
20
+ @logger.info ' Response'
21
+ @logger.info " -- Status: #{env[:status]}"
22
+ env[:response_headers].each do |key, value|
23
+ @logger.info " -- #{key}: #{value}"
24
+ end
25
+ @logger.info ' Response body'
26
+ @logger.info " -- #{env[:body]} \n"
27
+ end
28
+ end
29
+ end
30
+ end
@@ -9,14 +9,14 @@ module BoletoSimples
9
9
  # Examples:
10
10
  #
11
11
  # BoletoSimples::BankBillet.all
12
- # BoletoSimples::ResponseError: 401 POST https://sandbox.boletosimples.com.br/api/v1/bank_billets
12
+ # BoletoSimples::ResponseError: 401 POST https://api-sandbox.kobana.com.br/v1/bank_billets
13
13
  #
14
14
  # begin
15
15
  # BoletoSimples::BankBillet.all
16
16
  # rescue BoletoSimples::ResponseError => response
17
17
  # response.status # => 401
18
18
  # response.method # => "GET"
19
- # response.url # => "https://sandbox.boletosimples.com.br/api/v1/bank_billets"
19
+ # response.url # => "https://api-sandbox.kobana.com.br/v1/bank_billets"
20
20
  # response.body # => "{"error":"Você precisa se logar ou registrar antes de prosseguir."}"
21
21
  # response.error_message # => "Você precisa se logar ou registrar antes de prosseguir."
22
22
  # end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BoletoSimples
4
- VERSION = '1.0.2'
4
+ VERSION = '2.0.0'
5
5
  end
data/lib/boletosimples.rb CHANGED
@@ -34,6 +34,7 @@ module BoletoSimples
34
34
  autoload :UserAgent, 'boletosimples/middlewares/user_agent'
35
35
  autoload :RaiseError, 'boletosimples/middlewares/raise_error'
36
36
  autoload :LastRequest, 'boletosimples/middlewares/last_request'
37
+ autoload :Debug, 'boletosimples/middlewares/debug'
37
38
  autoload :Bearer, 'boletosimples/middlewares/bearer'
38
39
  end
39
40
 
@@ -14,7 +14,7 @@
14
14
 
15
15
  # it do
16
16
  # expect(subject.environment).to eq(:sandbox)
17
- # expect(subject.base_uri).to eq('https://sandbox.boletosimples.com.br/api/v1')
17
+ # expect(subject.base_uri).to eq('https://api-sandbox.kobana.com.br/v1')
18
18
  # expect(subject.cache).to be_nil
19
19
  # expect(subject.user_agent).to be_nil
20
20
  # end
@@ -31,7 +31,7 @@
31
31
 
32
32
  # it do
33
33
  # expect(subject.environment).to eq(:production)
34
- # expect(subject.base_uri).to eq('https://boletosimples.com.br/api/v1')
34
+ # expect(subject.base_uri).to eq('https://api.kobana.com.br/v1')
35
35
  # expect(subject.user_agent).to eq('email@minhaempresa.com.br')
36
36
  # end
37
37
 
@@ -59,7 +59,7 @@
59
59
  # it do
60
60
  # expect(subject.environment).to eq(:production)
61
61
  # expect(subject.user_agent).to eq('Meu agent')
62
- # expect(subject.base_uri).to eq('https://boletosimples.com.br/api/v1')
62
+ # expect(subject.base_uri).to eq('https://api.kobana.com.br/v1')
63
63
  # end
64
64
 
65
65
  # describe 'cache' do
@@ -10,7 +10,7 @@ RSpec.describe BoletoSimples::BankBillet do
10
10
  @bank_billet = described_class.create(
11
11
  amount: 9.01,
12
12
  description: 'Despesas do contrato 0012',
13
- expire_at: '2022-01-01',
13
+ expire_at: '2024-01-01',
14
14
  customer_address: 'Rua quinhentos',
15
15
  customer_address_complement: 'Sala 4',
16
16
  customer_address_number: '111',
@@ -60,7 +60,7 @@ RSpec.describe BoletoSimples::BankBillet do
60
60
 
61
61
  it {
62
62
  expect(subject.response_errors).to eq({ customer_person_name: ['não pode ficar em branco'],
63
- customer_cnpj_cpf: ['não pode ficar em branco'],
63
+ customer_cnpj_cpf: ['não é um CNPJ ou CPF válido'],
64
64
  customer_zipcode: ['não pode ficar em branco'],
65
65
  expire_at: ['não pode ficar em branco', 'não é uma data válida'],
66
66
  customer_address: ['não pode ficar em branco'],
@@ -9,7 +9,7 @@ RSpec.describe BoletoSimples::Customer do
9
9
  VCR.use_cassette('resources/customer/create/valid') do
10
10
  @customer = described_class.create(
11
11
  person_name: 'Maria José',
12
- cnpj_cpf: '54.872.822/0001-91',
12
+ cnpj_cpf: '84.232.027/0001-08',
13
13
  email: 'cliente@example.com',
14
14
  address: 'Rua quinhentos',
15
15
  city_name: 'Rio de Janeiro',
@@ -42,8 +42,13 @@ RSpec.describe BoletoSimples::Customer do
42
42
  end
43
43
 
44
44
  it {
45
- expect(subject.response_errors).to eq([{ code: 422, status: 422,
46
- title: 'customer não pode ficar em branco' }])
45
+ expect(subject.response_errors).to eq({ address: ['não pode ficar em branco'],
46
+ city_name: ['não pode ficar em branco'],
47
+ cnpj_cpf: ['não é um CNPJ ou CPF válido'],
48
+ neighborhood: ['não pode ficar em branco'],
49
+ person_name: ['não pode ficar em branco'],
50
+ state: ['não está incluído na lista'],
51
+ zipcode: ['não pode ficar em branco'] })
47
52
  }
48
53
  end
49
54
 
@@ -56,7 +61,7 @@ RSpec.describe BoletoSimples::Customer do
56
61
 
57
62
  it {
58
63
  expect(subject.response_errors).to eq({ person_name: ['não pode ficar em branco'],
59
- cnpj_cpf: ['não pode ficar em branco'], zipcode: ['não pode ficar em branco'],
64
+ cnpj_cpf: ['não é um CNPJ ou CPF válido'], zipcode: ['não pode ficar em branco'],
60
65
  address: ['não pode ficar em branco'], neighborhood: ['não pode ficar em branco'],
61
66
  city_name: ['não pode ficar em branco'], state: ['não está incluído na lista'] })
62
67
  }
@@ -61,7 +61,7 @@ RSpec.describe BoletoSimples::CustomerSubscription do
61
61
 
62
62
  it {
63
63
  expect(subject.response_errors).to eq({ customer_person_name: ['não pode ficar em branco'],
64
- customer_cnpj_cpf: ['não pode ficar em branco'],
64
+ customer_cnpj_cpf: ['não é um CNPJ ou CPF válido'],
65
65
  customer_zipcode: ['não pode ficar em branco'],
66
66
  amount: ['não pode ficar em branco'],
67
67
  customer_address: ['não pode ficar em branco'],
@@ -62,7 +62,7 @@ RSpec.describe BoletoSimples::Installment do
62
62
 
63
63
  it {
64
64
  expect(subject.response_errors).to eq({ customer_person_name: ['não pode ficar em branco'],
65
- customer_cnpj_cpf: ['não pode ficar em branco'],
65
+ customer_cnpj_cpf: ['não é um CNPJ ou CPF válido'],
66
66
  customer_zipcode: ['não pode ficar em branco'],
67
67
  total: ['não pode ficar em branco', 'não é um número'],
68
68
  start_at: ['não pode ficar em branco'],