boletosimples 1.0.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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'],