xendit_api 0.2.0 → 0.3.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
- SHA1:
3
- metadata.gz: 63a2d0539464a61057887bc4a7341bf33eda91f4
4
- data.tar.gz: 09f7fa06a8f732f55ddde5dabfda8b95a841c64c
2
+ SHA256:
3
+ metadata.gz: e0bf39618797a2008a3b33591ed56eb92cff05d7308425632bf8ad5e627325eb
4
+ data.tar.gz: 9002af7f6b81d700c0985fed584a28cb96fc64beb49e66620aaf3fb53c54546b
5
5
  SHA512:
6
- metadata.gz: 0472cb2f05ca5a44ef10dc8b302bfddb76189f722565865fd07ac0f5109dd1e2408f3db9d6b546f2c8b810d7fba3b8b97496160e82459cb0f6f0a22867102028
7
- data.tar.gz: 26a485809e494a38cbd25790c34d5276c4f80f86219bbe700a3490413f3f6f90abb4221d9bb8c266fd636c520dffd8b0c653f6642cc4a3e38d2578fd0ea7bc12
6
+ metadata.gz: '00159c4445d6d4d85741ffa9e3d0692f34f0bc904e94ccc86dea92888c71892d6f6d458d62f700b8a1b3a4fd31c687f847e6fc3d519d103e0af8c4cb7afa9133'
7
+ data.tar.gz: 32a93994f21cbfbe604be160d8dc6819b69b5a12ba7cec69f87cec0e7bc9e2ade6987641356b32614b93cb21f5685037788bbd7697eafd43fdc4206583b89424
data/.gitignore CHANGED
@@ -8,3 +8,4 @@
8
8
  /spec/reports/
9
9
  /tmp/
10
10
  /exe/xendit_api
11
+ .byebug_history
data/.rspec CHANGED
File without changes
File without changes
data/Gemfile CHANGED
File without changes
File without changes
data/README.md CHANGED
File without changes
data/Rakefile CHANGED
File without changes
@@ -10,5 +10,8 @@ require "xendit_api"
10
10
  # require "pry"
11
11
  # Pry.start
12
12
 
13
+ # NOTE: run this console with this command on terminal
14
+ # irb -I lib
15
+
13
16
  require "irb"
14
17
  IRB.start
data/bin/setup CHANGED
File without changes
@@ -1,8 +1,6 @@
1
1
  require 'faraday'
2
2
 
3
- # @private
4
3
  module FaradayMiddleware
5
- # @private
6
4
  class RaiseHttpException < Faraday::Middleware
7
5
  def call(env)
8
6
  @app.call(env).on_complete do |response|
@@ -33,7 +31,7 @@ module FaradayMiddleware
33
31
  private
34
32
 
35
33
  def error_message_400(response)
36
- "#{response[:method].to_s.upcase} #{response[:url].to_s}: #{response[:status]}#{error_body(response[:body])}"
34
+ "#{response[:method].to_s.upcase} #{response[:url].to_s}: #{response[:status]} | #{error_body(response[:body])}"
37
35
  end
38
36
 
39
37
  def error_body(body)
@@ -45,10 +43,11 @@ module FaradayMiddleware
45
43
 
46
44
  if body.nil?
47
45
  nil
48
- elsif body['meta'] and body['meta']['error_message'] and not body['meta']['error_message'].empty?
49
- ": #{body['meta']['error_message']}"
50
- elsif body['error_message'] and not body['error_message'].empty?
51
- ": #{body['error_type']}: #{body['error_message']}"
46
+ else
47
+ errors = body["errors"]
48
+ return nil if errors.count.zero?
49
+
50
+ errors.map { |x| x["messages"] }.join(',')
52
51
  end
53
52
  end
54
53
 
@@ -9,6 +9,6 @@ module XenditApi
9
9
  BASE_VERSION = '0'
10
10
 
11
11
  def self.base_url
12
- @base_url = BASE_URL
12
+ @base_url = BASE_URL
13
13
  end
14
14
  end
@@ -4,23 +4,23 @@ require "faraday_middleware"
4
4
  require "json"
5
5
 
6
6
  module XenditApi
7
- class Client
8
- attr_reader :token
7
+ class Client
8
+ attr_reader :token, :error
9
9
 
10
10
  def initialize(api_key:)
11
- @api_key = api_key
12
- # Xendit requires us to use token in every request
13
- # This is how to get the token, appending colon at the end then encode it
11
+ @api_key = api_key
12
+ # Xendit requires us to use token in every request
13
+ # This is how to get the token, appending colon at the end then encode it
14
14
  @token = Base64.strict_encode64(api_key + ':')
15
15
  setup_connection
16
16
  end
17
17
 
18
18
  def get_cash_balance
19
- return nil if @api_key.empty?
19
+ return nil if @api_key.empty?
20
20
 
21
- response = make_request('balance', 'get', {})
21
+ response = make_request('balance', 'get', {})
22
22
 
23
- attrs = JSON.parse(response.body)
23
+ attrs = JSON.parse(response.body)
24
24
  XenditApi::Entities::CashAccount.new(attrs)
25
25
  end
26
26
 
@@ -62,22 +62,32 @@ module XenditApi
62
62
  XenditApi::Entities::Invoice.new(attrs)
63
63
  end
64
64
 
65
- def create_fixed_virtual_account(external_id:, bank_code:, name:, virtual_account_number:)
65
+ def create_fixed_virtual_account(external_id:, bank_code:, name:, virtual_account_number: nil)
66
66
  return nil if @api_key.empty?
67
67
 
68
68
  data = {
69
- external_id: external_id,
70
- bank_code: bank_code,
71
- name: name,
72
- virtual_account_number: virtual_account_number
69
+ external_id: external_id,
70
+ bank_code: bank_code,
71
+ name: name
73
72
  }
74
-
73
+ data[:virtual_account_number] = virtual_account_number unless virtual_account_number.nil?
74
+
75
75
  response = make_request('callback_virtual_accounts', 'post', data)
76
76
 
77
77
  attrs = JSON.parse(response.body)
78
78
  XenditApi::Entities::VirtualAccount.new(attrs)
79
79
  end
80
80
 
81
+ def get_virtual_account(id:)
82
+ return nil if @api_key.empty?
83
+
84
+ path = 'callback_virtual_accounts/' + id.to_s
85
+ response = make_request(path, 'get')
86
+
87
+ attrs = JSON.parse(response.body)
88
+ XenditApi::Entities::VirtualAccount.new(attrs)
89
+ end
90
+
81
91
  def get_banks_for_virtual_account
82
92
  return nil if @api_key.empty?
83
93
 
@@ -182,5 +192,5 @@ module XenditApi
182
192
 
183
193
  @connection.get endpoint
184
194
  end
185
- end
195
+ end
186
196
  end
@@ -1,14 +1,14 @@
1
1
  module XenditApi
2
- module Entities
3
- class Bank < Base
4
- extend ModelAttribute
2
+ module Entities
3
+ class Bank < Base
4
+ extend ModelAttribute
5
5
 
6
- attribute :name, :string
7
- attribute :code, :string
6
+ attribute :name, :string
7
+ attribute :code, :string
8
8
 
9
- def initialize(attributes = {})
10
- set_attributes(attributes)
11
- end
12
- end
13
- end
9
+ def initialize(attributes = {})
10
+ set_attributes(attributes)
11
+ end
12
+ end
13
+ end
14
14
  end
@@ -1,14 +1,14 @@
1
1
  require 'model_attribute'
2
2
 
3
3
  module XenditApi
4
- module Entities
5
- class Base
6
- require "xendit_api/entities/bank.rb"
7
- require "xendit_api/entities/card_charge.rb"
8
- require "xendit_api/entities/cash_account.rb"
9
- require "xendit_api/entities/disbursement.rb"
10
- require "xendit_api/entities/invoice.rb"
11
- require "xendit_api/entities/virtual_account.rb"
12
- end
13
- end
4
+ module Entities
5
+ class Base
6
+ require "xendit_api/entities/bank.rb"
7
+ require "xendit_api/entities/card_charge.rb"
8
+ require "xendit_api/entities/cash_account.rb"
9
+ require "xendit_api/entities/disbursement.rb"
10
+ require "xendit_api/entities/invoice.rb"
11
+ require "xendit_api/entities/virtual_account.rb"
12
+ end
13
+ end
14
14
  end
@@ -1,21 +1,21 @@
1
1
  module XenditApi
2
- module Entities
3
- class CardCharge < Base
4
- extend ModelAttribute
2
+ module Entities
3
+ class CardCharge < Base
4
+ extend ModelAttribute
5
5
 
6
- attribute :id, :string
7
- attribute :external_id, :string
8
- attribute :capture_amount, :integer
9
- attribute :business_id, :string
10
- attribute :merchant_reference_code, :string
11
- attribute :merchant_id, :string
12
- attribute :created, :string
13
- attribute :status, :string
14
- attribute :eci, :string
6
+ attribute :id, :string
7
+ attribute :external_id, :string
8
+ attribute :capture_amount, :integer
9
+ attribute :business_id, :string
10
+ attribute :merchant_reference_code, :string
11
+ attribute :merchant_id, :string
12
+ attribute :created, :string
13
+ attribute :status, :string
14
+ attribute :eci, :string
15
15
 
16
- def initialize(attributes = {})
17
- set_attributes(attributes)
18
- end
19
- end
20
- end
16
+ def initialize(attributes = {})
17
+ set_attributes(attributes)
18
+ end
19
+ end
20
+ end
21
21
  end
@@ -1,15 +1,15 @@
1
1
  module XenditApi
2
- module Entities
3
- class CashAccount < Base
4
- extend ModelAttribute
2
+ module Entities
3
+ class CashAccount < Base
4
+ extend ModelAttribute
5
5
 
6
- attribute :balance, :integer
7
- attribute :balance_cents, :integer
6
+ attribute :balance, :integer
7
+ attribute :balance_cents, :integer
8
8
 
9
- def initialize(attributes = {})
10
- set_attributes(attributes, true)
11
- @balance_cents = (balance.to_s + '00').to_i
12
- end
13
- end
14
- end
9
+ def initialize(attributes = {})
10
+ set_attributes(attributes, true)
11
+ @balance_cents = (balance.to_s + '00').to_i
12
+ end
13
+ end
14
+ end
15
15
  end
@@ -1,20 +1,20 @@
1
1
  module XenditApi
2
- module Entities
3
- class Disbursement < Base
4
- extend ModelAttribute
2
+ module Entities
3
+ class Disbursement < Base
4
+ extend ModelAttribute
5
5
 
6
- attribute :id, :string
7
- attribute :user_id, :string
8
- attribute :external_id, :string
9
- attribute :amount, :integer
10
- attribute :bank_code, :string
11
- attribute :account_holder_name, :string
12
- attribute :disbursement_description, :string
13
- attribute :status, :string
6
+ attribute :id, :string
7
+ attribute :user_id, :string
8
+ attribute :external_id, :string
9
+ attribute :amount, :integer
10
+ attribute :bank_code, :string
11
+ attribute :account_holder_name, :string
12
+ attribute :disbursement_description, :string
13
+ attribute :status, :string
14
14
 
15
- def initialize(attributes = {})
16
- set_attributes(attributes)
17
- end
18
- end
19
- end
15
+ def initialize(attributes = {})
16
+ set_attributes(attributes)
17
+ end
18
+ end
19
+ end
20
20
  end
@@ -1,30 +1,30 @@
1
1
  module XenditApi
2
- module Entities
3
- class Invoice < Base
4
- extend ModelAttribute
2
+ module Entities
3
+ class Invoice < Base
4
+ extend ModelAttribute
5
5
 
6
- attribute :id, :string
7
- attribute :user_id, :string
8
- attribute :external_id, :string
9
- attribute :is_high, :boolean
10
- attribute :status, :string
11
- attribute :merchant_name, :string
12
- attribute :amount, :integer
13
- attribute :billable_amount, :integer
14
- attribute :taxable_amount, :integer
15
- attribute :received_amount, :integer
16
- attribute :payer_email, :string
17
- attribute :description, :string
18
- attribute :invoice_url, :string
19
- attribute :xendit_fee_amount, :integer
20
- attribute :expiry_date, :string
21
- attribute :taxes, :json
22
- attribute :fees, :json
23
- attribute :available_banks, :json
6
+ attribute :id, :string
7
+ attribute :user_id, :string
8
+ attribute :external_id, :string
9
+ attribute :is_high, :boolean
10
+ attribute :status, :string
11
+ attribute :merchant_name, :string
12
+ attribute :amount, :integer
13
+ attribute :billable_amount, :integer
14
+ attribute :taxable_amount, :integer
15
+ attribute :received_amount, :integer
16
+ attribute :payer_email, :string
17
+ attribute :description, :string
18
+ attribute :invoice_url, :string
19
+ attribute :xendit_fee_amount, :integer
20
+ attribute :expiry_date, :string
21
+ attribute :taxes, :json
22
+ attribute :fees, :json
23
+ attribute :available_banks, :json
24
24
 
25
- def initialize(attributes = {})
26
- set_attributes(attributes)
27
- end
28
- end
29
- end
25
+ def initialize(attributes = {})
26
+ set_attributes(attributes)
27
+ end
28
+ end
29
+ end
30
30
  end
@@ -1,19 +1,19 @@
1
1
  module XenditApi
2
- module Entities
3
- class VirtualAccount < Base
4
- extend ModelAttribute
2
+ module Entities
3
+ class VirtualAccount < Base
4
+ extend ModelAttribute
5
5
 
6
- attribute :id, :string
7
- attribute :owner_id, :string
8
- attribute :external_id, :string
9
- attribute :bank_code, :string
10
- attribute :merchant_code, :string
11
- attribute :name, :string
12
- attribute :account_number, :string
6
+ attribute :id, :string
7
+ attribute :owner_id, :string
8
+ attribute :external_id, :string
9
+ attribute :bank_code, :string
10
+ attribute :merchant_code, :string
11
+ attribute :name, :string
12
+ attribute :account_number, :string
13
13
 
14
- def initialize(attributes = {})
15
- set_attributes(attributes)
16
- end
17
- end
18
- end
14
+ def initialize(attributes = {})
15
+ set_attributes(attributes)
16
+ end
17
+ end
18
+ end
19
19
  end
File without changes
@@ -1,3 +1,3 @@
1
1
  module XenditApi
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -21,15 +21,16 @@ Gem::Specification.new do |spec|
21
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ["lib"]
23
23
 
24
- spec.add_dependency 'model_attribute', '~> 3.0.0'
25
- spec.add_dependency 'faraday', '~> 0.11.0'
26
- spec.add_dependency 'faraday_middleware', '~> 0.10.1'
24
+ spec.add_dependency 'model_attribute', '~> 3.0.0'
25
+ spec.add_dependency 'faraday', '~> 1.3.0'
26
+ spec.add_dependency 'faraday_middleware', '~> 1.0.0'
27
27
 
28
- spec.add_development_dependency "bundler", "~> 1.13"
29
- spec.add_development_dependency "rake", "~> 10.0"
30
- spec.add_development_dependency "rspec", "~> 3.0"
31
- spec.add_development_dependency 'capybara', '2.5.0'
32
- spec.add_development_dependency 'shoulda-context', '1.2.2'
28
+ spec.add_development_dependency "bundler", "~> 2.1.4"
29
+ spec.add_development_dependency "rake", ">= 12.3.3"
30
+ spec.add_development_dependency "dotenv"
31
+ spec.add_development_dependency "rspec", "~> 3.0"
32
+ spec.add_development_dependency 'capybara', '2.5.0'
33
+ spec.add_development_dependency 'shoulda-context', '1.2.2'
33
34
  spec.add_development_dependency 'shoulda-matchers', '3.1.1'
34
- spec.add_development_dependency 'webmock', '2.1.0'
35
+ spec.add_development_dependency 'webmock', '3.11.0'
35
36
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xendit_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Galih Muhammad
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-04-08 00:00:00.000000000 Z
11
+ date: 2021-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: model_attribute
@@ -30,56 +30,70 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.11.0
33
+ version: 1.3.0
34
34
  type: :runtime
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: 0.11.0
40
+ version: 1.3.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: faraday_middleware
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.10.1
47
+ version: 1.0.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.10.1
54
+ version: 1.0.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.13'
61
+ version: 2.1.4
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '1.13'
68
+ version: 2.1.4
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: '10.0'
75
+ version: 12.3.3
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 12.3.3
83
+ - !ruby/object:Gem::Dependency
84
+ name: dotenv
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
81
95
  - !ruby/object:Gem::Version
82
- version: '10.0'
96
+ version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: rspec
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -142,14 +156,14 @@ dependencies:
142
156
  requirements:
143
157
  - - '='
144
158
  - !ruby/object:Gem::Version
145
- version: 2.1.0
159
+ version: 3.11.0
146
160
  type: :development
147
161
  prerelease: false
148
162
  version_requirements: !ruby/object:Gem::Requirement
149
163
  requirements:
150
164
  - - '='
151
165
  - !ruby/object:Gem::Version
152
- version: 2.1.0
166
+ version: 3.11.0
153
167
  description: Just simple and easy to use wrapper for Xendit API in ruby
154
168
  email:
155
169
  - galih0muhammad@gmail.com
@@ -198,8 +212,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
198
212
  - !ruby/object:Gem::Version
199
213
  version: '0'
200
214
  requirements: []
201
- rubyforge_project:
202
- rubygems_version: 2.5.1
215
+ rubygems_version: 3.1.4
203
216
  signing_key:
204
217
  specification_version: 4
205
218
  summary: A ruby wrapper for Xendit API