bloom_remit_client 0.1.0 → 0.2.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 +4 -4
- data/CHANGELOG.md +8 -0
- data/lib/bloom_remit_client.rb +8 -0
- data/lib/bloom_remit_client/client.rb +18 -5
- data/lib/bloom_remit_client/models/payment.rb +23 -0
- data/lib/bloom_remit_client/models/user.rb +21 -0
- data/lib/bloom_remit_client/requests/base_request.rb +29 -0
- data/lib/bloom_remit_client/requests/billers_request.rb +3 -15
- data/lib/bloom_remit_client/requests/create_payment_request.rb +30 -0
- data/lib/bloom_remit_client/requests/create_sender_request.rb +23 -0
- data/lib/bloom_remit_client/responses/base_response.rb +20 -0
- data/lib/bloom_remit_client/responses/billers_response.rb +1 -7
- data/lib/bloom_remit_client/responses/create_payment_response.rb +17 -0
- data/lib/bloom_remit_client/responses/create_sender_response.rb +17 -0
- data/lib/bloom_remit_client/version.rb +1 -1
- metadata +10 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bf0cd6b7a3e7919d1cf2424a676cf5dec9a1a308
|
4
|
+
data.tar.gz: 87b7e333204589009ec8ad99c8feb823e89bd37c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 93ba9929ce8a13d2c00c18ad37f80db1fe36b9b9e0d9b2f708236ab7da909d0633d6dba560dfe5bb07677648d99dd572514f8c41b5a1cad1b2603f65c000037e
|
7
|
+
data.tar.gz: 0d0d3d334bc5bf1d6df8861218cf81be1a1725d8b6a3612824b52caeb74aa6a33c7a5c503009d085902010c2cdded315e6da67c862893d38ec85b39a10eb352a
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,14 @@
|
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
4
4
|
|
5
|
+
## [0.2.0] - 2016-07-29
|
6
|
+
### Added
|
7
|
+
- Add ability to create sender
|
8
|
+
- Add ability to create payment
|
9
|
+
|
10
|
+
### Changed
|
11
|
+
- Require `agent_id` to be set on the client
|
12
|
+
|
5
13
|
## [0.1.0] - 2016-07-20
|
6
14
|
### Added
|
7
15
|
- Fetch billers
|
data/lib/bloom_remit_client.rb
CHANGED
@@ -6,8 +6,16 @@ require 'active_support/core_ext/object/try'
|
|
6
6
|
require "bloom_remit_client/version"
|
7
7
|
require "bloom_remit_client/client"
|
8
8
|
require "bloom_remit_client/models/biller"
|
9
|
+
require "bloom_remit_client/models/user"
|
10
|
+
require "bloom_remit_client/models/payment"
|
11
|
+
require "bloom_remit_client/requests/base_request"
|
9
12
|
require "bloom_remit_client/requests/billers_request"
|
13
|
+
require "bloom_remit_client/requests/create_sender_request"
|
14
|
+
require "bloom_remit_client/requests/create_payment_request"
|
15
|
+
require "bloom_remit_client/responses/base_response"
|
10
16
|
require "bloom_remit_client/responses/billers_response"
|
17
|
+
require "bloom_remit_client/responses/create_sender_response"
|
18
|
+
require "bloom_remit_client/responses/create_payment_response"
|
11
19
|
|
12
20
|
module BloomRemitClient
|
13
21
|
|
@@ -1,15 +1,14 @@
|
|
1
1
|
module BloomRemitClient
|
2
2
|
class Client
|
3
3
|
|
4
|
-
DEFAULT_URL = "https://bloom.solutions"
|
5
|
-
|
6
4
|
include Virtus.model
|
7
5
|
attribute :token, String
|
8
6
|
attribute :secret, String
|
9
|
-
attribute :
|
7
|
+
attribute :agent_id, String
|
8
|
+
attribute :url, String
|
10
9
|
|
11
10
|
include ActiveModel::Validations
|
12
|
-
validates :token, :secret, presence: true
|
11
|
+
validates :token, :secret, :agent_id, :url, presence: true
|
13
12
|
|
14
13
|
def billers
|
15
14
|
request = BillersRequest.new(default_opts)
|
@@ -17,10 +16,24 @@ module BloomRemitClient
|
|
17
16
|
BillersResponse.new(raw_response: raw_response)
|
18
17
|
end
|
19
18
|
|
19
|
+
def create_sender(opts)
|
20
|
+
request = CreateSenderRequest.new(default_opts.merge(sender: opts))
|
21
|
+
raw_response = request.()
|
22
|
+
CreateSenderResponse.new(raw_response: raw_response)
|
23
|
+
end
|
24
|
+
|
25
|
+
def create_payment(opts)
|
26
|
+
params = default_opts.
|
27
|
+
merge(sender_id: opts.delete(:sender_id)).
|
28
|
+
merge(payment: opts)
|
29
|
+
request = CreatePaymentRequest.new(params)
|
30
|
+
CreatePaymentResponse.new(raw_response: request.())
|
31
|
+
end
|
32
|
+
|
20
33
|
private
|
21
34
|
|
22
35
|
def default_opts
|
23
|
-
attributes.slice(:token, :secret, :url)
|
36
|
+
attributes.slice(:token, :secret, :url, :agent_id)
|
24
37
|
end
|
25
38
|
|
26
39
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module BloomRemitClient
|
2
|
+
class Payment
|
3
|
+
|
4
|
+
include Virtus.model
|
5
|
+
attribute :id, String
|
6
|
+
attribute :teller_id, String
|
7
|
+
attribute :recipient_id, String
|
8
|
+
attribute :orig_currency, String
|
9
|
+
attribute :dest_currency, String
|
10
|
+
attribute :paid_in_orig_currency, Float
|
11
|
+
attribute :receivable_in_dest_currency, Float
|
12
|
+
attribute :status, String
|
13
|
+
attribute :payout_method, String
|
14
|
+
attribute :partner_id, String
|
15
|
+
attribute :flat_fee_in_orig_currency, Float
|
16
|
+
attribute :forex_margin, Float
|
17
|
+
attribute :account_name, String
|
18
|
+
attribute :account_number, String
|
19
|
+
attribute :callback_url, String
|
20
|
+
attribute :sender_id, String
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module BloomRemitClient
|
2
|
+
class User
|
3
|
+
|
4
|
+
include Virtus.model
|
5
|
+
attribute :id, String
|
6
|
+
attribute :email, String
|
7
|
+
attribute :first_name, String
|
8
|
+
attribute :last_name, String
|
9
|
+
attribute :passport_number, String
|
10
|
+
attribute :passport_expiry_date, String
|
11
|
+
attribute :tin, String
|
12
|
+
attribute :mobile, String
|
13
|
+
attribute :address, String
|
14
|
+
attribute :city, String
|
15
|
+
attribute :state, String
|
16
|
+
attribute :zip_code, String
|
17
|
+
attribute :country, String
|
18
|
+
attribute :birthdate, String
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module BloomRemitClient
|
2
|
+
class BaseRequest
|
3
|
+
|
4
|
+
include Virtus.model
|
5
|
+
attribute :token, String
|
6
|
+
attribute :secret, String
|
7
|
+
attribute :url, String
|
8
|
+
attribute :agent_id, String
|
9
|
+
attribute :path, String, lazy: true, default: :default_path
|
10
|
+
attribute :endpoint, String, lazy: true, default: :default_endpoint
|
11
|
+
|
12
|
+
include ActiveModel::Validations
|
13
|
+
validates :token, :secret, :url, :path, presence: true
|
14
|
+
|
15
|
+
def call
|
16
|
+
HTTParty.get(self.endpoint)
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def default_endpoint
|
22
|
+
return nil if self.url.nil?
|
23
|
+
uri = URI.parse(self.url)
|
24
|
+
uri.path = path
|
25
|
+
uri.to_s
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
@@ -1,28 +1,16 @@
|
|
1
1
|
module BloomRemitClient
|
2
|
-
class BillersRequest
|
2
|
+
class BillersRequest < BaseRequest
|
3
3
|
|
4
4
|
PATH = "/api/v2/billers.json"
|
5
5
|
|
6
|
-
include Virtus.model
|
7
|
-
attribute :token, String
|
8
|
-
attribute :secret, String
|
9
|
-
attribute :url, String
|
10
|
-
attribute :endpoint, String, lazy: true, default: :default_endpoint
|
11
|
-
|
12
|
-
include ActiveModel::Validations
|
13
|
-
validates :token, :secret, :url, :endpoint, presence: true
|
14
|
-
|
15
6
|
def call
|
16
7
|
HTTParty.get(self.endpoint)
|
17
8
|
end
|
18
9
|
|
19
10
|
private
|
20
11
|
|
21
|
-
def
|
22
|
-
|
23
|
-
uri = URI.parse(self.url)
|
24
|
-
uri.path = PATH
|
25
|
-
uri.to_s
|
12
|
+
def default_path
|
13
|
+
PATH
|
26
14
|
end
|
27
15
|
|
28
16
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module BloomRemitClient
|
2
|
+
class CreatePaymentRequest < BaseRequest
|
3
|
+
|
4
|
+
PATH = "/api/v2/payments.json"
|
5
|
+
|
6
|
+
attribute :payment, Hash
|
7
|
+
attribute :sender_id, String
|
8
|
+
|
9
|
+
def call
|
10
|
+
HTTParty.post(self.endpoint, body: params)
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def default_path
|
16
|
+
PATH
|
17
|
+
end
|
18
|
+
|
19
|
+
def params
|
20
|
+
{
|
21
|
+
api_token: token,
|
22
|
+
api_secret: secret,
|
23
|
+
agent_id: agent_id,
|
24
|
+
sender_id: sender_id,
|
25
|
+
payment: payment,
|
26
|
+
}
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module BloomRemitClient
|
2
|
+
class CreateSenderRequest < BaseRequest
|
3
|
+
|
4
|
+
PATH = "/api/v1/partners/:token/senders.json"
|
5
|
+
|
6
|
+
attribute :sender, Hash
|
7
|
+
|
8
|
+
def call
|
9
|
+
HTTParty.post(self.endpoint, body: params)
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def default_path
|
15
|
+
PATH.gsub(":token", self.token)
|
16
|
+
end
|
17
|
+
|
18
|
+
def params
|
19
|
+
{ api_secret: secret, sender: sender }
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module BloomRemitClient
|
2
|
+
class BaseResponse
|
3
|
+
|
4
|
+
include Virtus.model
|
5
|
+
attribute :raw_response, Object
|
6
|
+
|
7
|
+
private
|
8
|
+
|
9
|
+
def data
|
10
|
+
json = JSON.parse(raw_response.body)
|
11
|
+
|
12
|
+
if json.is_a?(Array)
|
13
|
+
json.map(&:with_indifferent_access)
|
14
|
+
else
|
15
|
+
json.with_indifferent_access
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
@@ -1,8 +1,6 @@
|
|
1
1
|
module BloomRemitClient
|
2
|
-
class BillersResponse
|
2
|
+
class BillersResponse < BaseResponse
|
3
3
|
|
4
|
-
include Virtus.model
|
5
|
-
attribute :raw_response, Object
|
6
4
|
attribute :billers, Array, lazy: true, default: :default_billers
|
7
5
|
|
8
6
|
private
|
@@ -11,9 +9,5 @@ module BloomRemitClient
|
|
11
9
|
data.map { |hash| Biller.new(hash) }
|
12
10
|
end
|
13
11
|
|
14
|
-
def data
|
15
|
-
JSON.parse(raw_response.body)
|
16
|
-
end
|
17
|
-
|
18
12
|
end
|
19
13
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module BloomRemitClient
|
2
|
+
class CreatePaymentResponse < BaseResponse
|
3
|
+
|
4
|
+
attribute :payment, Object, lazy: true, default: :default_payment
|
5
|
+
|
6
|
+
def success?
|
7
|
+
raw_response.success?
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def default_payment
|
13
|
+
Payment.new(data[:payment])
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module BloomRemitClient
|
2
|
+
class CreateSenderResponse < BaseResponse
|
3
|
+
|
4
|
+
attribute :sender, Object, lazy: true, default: :default_sender
|
5
|
+
|
6
|
+
def success?
|
7
|
+
raw_response.success?
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def default_sender
|
13
|
+
User.new(data[:sender])
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bloom_remit_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ramon Tayag
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-07-
|
11
|
+
date: 2016-07-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -175,8 +175,16 @@ files:
|
|
175
175
|
- lib/bloom_remit_client.rb
|
176
176
|
- lib/bloom_remit_client/client.rb
|
177
177
|
- lib/bloom_remit_client/models/biller.rb
|
178
|
+
- lib/bloom_remit_client/models/payment.rb
|
179
|
+
- lib/bloom_remit_client/models/user.rb
|
180
|
+
- lib/bloom_remit_client/requests/base_request.rb
|
178
181
|
- lib/bloom_remit_client/requests/billers_request.rb
|
182
|
+
- lib/bloom_remit_client/requests/create_payment_request.rb
|
183
|
+
- lib/bloom_remit_client/requests/create_sender_request.rb
|
184
|
+
- lib/bloom_remit_client/responses/base_response.rb
|
179
185
|
- lib/bloom_remit_client/responses/billers_response.rb
|
186
|
+
- lib/bloom_remit_client/responses/create_payment_response.rb
|
187
|
+
- lib/bloom_remit_client/responses/create_sender_response.rb
|
180
188
|
- lib/bloom_remit_client/version.rb
|
181
189
|
homepage: https://github.com/imacchiato/bloom_remit_client-ruby
|
182
190
|
licenses:
|