xendit_api 0.2.0 → 0.3.0

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