bloom_remit_client 0.13.0 → 0.16.2

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 (55) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/push.yml +27 -0
  3. data/.ruby-version +1 -1
  4. data/CHANGELOG.md +27 -0
  5. data/Gemfile +2 -1
  6. data/README.md +61 -0
  7. data/bloom_remit_client.gemspec +5 -5
  8. data/lib/bloom_remit_client.rb +40 -50
  9. data/lib/bloom_remit_client/client.rb +6 -133
  10. data/lib/bloom_remit_client/factories.rb +23 -0
  11. data/lib/bloom_remit_client/models/txn.rb +39 -0
  12. data/lib/bloom_remit_client/models/txn_preview.rb +15 -0
  13. data/lib/bloom_remit_client/requests/base_request.rb +18 -0
  14. data/lib/bloom_remit_client/requests/create_txn_preview_request.rb +24 -0
  15. data/lib/bloom_remit_client/requests/create_txn_request.rb +79 -0
  16. data/lib/bloom_remit_client/responses/base_response.rb +18 -0
  17. data/lib/bloom_remit_client/responses/create_txn_preview_response.rb +16 -0
  18. data/lib/bloom_remit_client/responses/create_txn_response.rb +11 -0
  19. data/lib/bloom_remit_client/version.rb +1 -1
  20. metadata +23 -50
  21. data/.travis.yml +0 -9
  22. data/lib/bloom_remit_client/coercers/path.rb +0 -11
  23. data/lib/bloom_remit_client/concerns/has_base_authentification.rb +0 -16
  24. data/lib/bloom_remit_client/models/biller.rb +0 -16
  25. data/lib/bloom_remit_client/models/credit.rb +0 -12
  26. data/lib/bloom_remit_client/models/deposit_strategy.rb +0 -11
  27. data/lib/bloom_remit_client/models/payment.rb +0 -23
  28. data/lib/bloom_remit_client/models/recipient.rb +0 -18
  29. data/lib/bloom_remit_client/models/remittance.rb +0 -22
  30. data/lib/bloom_remit_client/models/user.rb +0 -21
  31. data/lib/bloom_remit_client/requests/base.rb +0 -55
  32. data/lib/bloom_remit_client/requests/billers/list.rb +0 -23
  33. data/lib/bloom_remit_client/requests/credit/history.rb +0 -20
  34. data/lib/bloom_remit_client/requests/credit/list.rb +0 -20
  35. data/lib/bloom_remit_client/requests/deposit_strategies/list.rb +0 -21
  36. data/lib/bloom_remit_client/requests/payments/create.rb +0 -31
  37. data/lib/bloom_remit_client/requests/rate/show.rb +0 -29
  38. data/lib/bloom_remit_client/requests/recipients/create.rb +0 -32
  39. data/lib/bloom_remit_client/requests/recipients/list.rb +0 -34
  40. data/lib/bloom_remit_client/requests/remittances/calculate.rb +0 -33
  41. data/lib/bloom_remit_client/requests/remittances/create.rb +0 -30
  42. data/lib/bloom_remit_client/requests/requests_sender.rb +0 -35
  43. data/lib/bloom_remit_client/requests/senders/create.rb +0 -30
  44. data/lib/bloom_remit_client/requests/txns/create.rb +0 -30
  45. data/lib/bloom_remit_client/requests/url_builder.rb +0 -51
  46. data/lib/bloom_remit_client/responses/base.rb +0 -31
  47. data/lib/bloom_remit_client/responses/billers/list.rb +0 -17
  48. data/lib/bloom_remit_client/responses/deposit_strategies/list.rb +0 -20
  49. data/lib/bloom_remit_client/responses/payments/create.rb +0 -17
  50. data/lib/bloom_remit_client/responses/recipients/create.rb +0 -20
  51. data/lib/bloom_remit_client/responses/recipients/list.rb +0 -20
  52. data/lib/bloom_remit_client/responses/remittances/calculate.rb +0 -69
  53. data/lib/bloom_remit_client/responses/remittances/create.rb +0 -20
  54. data/lib/bloom_remit_client/responses/senders/create.rb +0 -21
  55. data/lib/bloom_remit_client/responses/txns/create.rb +0 -20
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
- module BloomRemitClient
3
- module Requests
4
- class RequestsSender
5
- class << self
6
- def default_headers
7
- @default_headers ||= {
8
- 'Content-Type' => Requests::CONTENT_TYPE_JSON_UTF8,
9
- 'Accept' => Requests::CONTENT_TYPE_JSON
10
- }
11
- end
12
-
13
- def call(params)
14
- new(params).call
15
- end
16
- end
17
-
18
- include Virtus.model
19
- include ActiveModel::Validations
20
-
21
- attribute :type, String
22
- attribute :body, String
23
- attribute :headers, Hash,
24
- lazy: true,
25
- default: ->(object, _) { object.class.default_headers }
26
- attribute :url, Requests::UrlBuilder
27
-
28
- validates :type, presence: true, inclusion: Requests::REQUEST_TYPES
29
-
30
- def call
31
- HTTParty.send(type, url.(), body: body, headers: headers)
32
- end
33
- end
34
- end
35
- end
@@ -1,30 +0,0 @@
1
- module BloomRemitClient
2
- module Requests
3
- module Senders
4
- class Create < Base
5
-
6
- include Concerns::HasBaseAuthentification
7
-
8
- PATH = "/api/v1/partners/:token/senders.json"
9
-
10
- attribute :sender, Hash
11
- attribute :agent_id, String
12
-
13
- private
14
-
15
- def path
16
- PATH.gsub(":token", self.api_token)
17
- end
18
-
19
- def type
20
- POST
21
- end
22
-
23
- def body_params
24
- attributes.slice(:agent_id, :sender)
25
- end
26
-
27
- end
28
- end
29
- end
30
- end
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
- module BloomRemitClient
3
- module Requests
4
- module Txns
5
- class Create < Base
6
- include Concerns::HasBaseAuthentification
7
- PATH = "/api/v3/txns"
8
-
9
- attribute :txn, Hash
10
- attribute :sender_id, String
11
- attribute :recipient_id, String
12
- attribute :agent_id, String
13
-
14
- private
15
-
16
- def path
17
- Requests.normalize_path(PATH, attributes.slice(:api_token, :sender_id))
18
- end
19
-
20
- def type
21
- POST
22
- end
23
-
24
- def body_params
25
- attributes.slice(*%i[api_token agent_id recipient_id sender_id txn])
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,51 +0,0 @@
1
- # frozen_string_literal: true
2
- module BloomRemitClient
3
- module Requests
4
- class UrlBuilder
5
- require 'addressable/uri'
6
- include Virtus.model
7
- include ActiveModel::Validations
8
-
9
- attribute :scheme, String, default: 'https'
10
- attribute :subdomain, String
11
- attribute :userinfo, String
12
- attribute :path, Coercers::Path
13
- attribute :host, String
14
- attribute :port, Integer
15
- attribute :query, String
16
- attribute :query_params, Hash, default: {}
17
- attribute :fragment, String
18
-
19
- validates :path, :host, :scheme, presence: true
20
- validates :scheme, inclusion: ['https', 'http']
21
-
22
- def call
23
- builder.build(to_h).to_s
24
- end
25
-
26
- def host
27
- return super unless subdomain.present?
28
- "#{subdomain}.#{super}"
29
- end
30
-
31
- def query
32
- super || build_query
33
- end
34
-
35
- private
36
-
37
- def builder
38
- case scheme
39
- when 'http'
40
- URI::HTTP
41
- when 'https'
42
- URI::HTTPS
43
- end
44
- end
45
-
46
- def build_query
47
- Addressable::URI.new(query_values: query_params).query
48
- end
49
- end
50
- end
51
- end
@@ -1,31 +0,0 @@
1
- module BloomRemitClient
2
- module Responses
3
- class Base
4
-
5
- include Virtus.model
6
- attribute :raw_response, Object
7
- attribute(:body, Coercers::IndifferentHash, {
8
- lazy: true,
9
- default: :default_body,
10
- })
11
- attribute :success, Boolean, lazy: true, default: :default_success
12
-
13
- private
14
-
15
- def default_success
16
- raw_response.success?
17
- end
18
-
19
- def default_body
20
- json = JSON.parse(raw_response.body)
21
-
22
- if json.is_a?(Array)
23
- json.map(&:with_indifferent_access)
24
- else
25
- json.with_indifferent_access
26
- end
27
- end
28
-
29
- end
30
- end
31
- end
@@ -1,17 +0,0 @@
1
- module BloomRemitClient
2
- module Responses
3
- module Billers
4
- class List < Base
5
-
6
- attribute :billers, Array, lazy: true, default: :default_billers
7
-
8
- private
9
-
10
- def default_billers
11
- body.map { |hash| Biller.new(hash) }
12
- end
13
-
14
- end
15
- end
16
- end
17
- end
@@ -1,20 +0,0 @@
1
- module BloomRemitClient
2
- module Responses
3
- module DepositStrategies
4
- class List < Base
5
-
6
- attribute(:deposit_strategies, Array, {
7
- lazy: true,
8
- default: :default_deposit_strategies,
9
- })
10
-
11
- private
12
-
13
- def default_deposit_strategies
14
- body.map { |hash| DepositStrategy.new(hash) }
15
- end
16
-
17
- end
18
- end
19
- end
20
- end
@@ -1,17 +0,0 @@
1
- module BloomRemitClient
2
- module Responses
3
- module Payments
4
- class Create < Base
5
-
6
- attribute :payment, Object, lazy: true, default: :default_payment
7
-
8
- private
9
-
10
- def default_payment
11
- Payment.new(body[:payment])
12
- end
13
-
14
- end
15
- end
16
- end
17
- end
@@ -1,20 +0,0 @@
1
- module BloomRemitClient
2
- module Responses
3
- module Recipients
4
- class Create < Base
5
-
6
- attribute(:recipient, Object, {
7
- lazy: true,
8
- default: :default_recipient,
9
- })
10
-
11
- private
12
-
13
- def default_recipient
14
- Recipient.new(body[:recipient])
15
- end
16
-
17
- end
18
- end
19
- end
20
- end
@@ -1,20 +0,0 @@
1
- module BloomRemitClient
2
- module Responses
3
- module Recipients
4
- class List < Base
5
-
6
- attribute(:recipients, Array, {
7
- lazy: true,
8
- default: :default_recipients,
9
- })
10
-
11
- private
12
-
13
- def default_recipients
14
- body.map { |hash| Recipient.new(hash) }
15
- end
16
-
17
- end
18
- end
19
- end
20
- end
@@ -1,69 +0,0 @@
1
- module BloomRemitClient
2
- module Responses
3
- module Remittances
4
- class Calculate < Base
5
-
6
- attribute(:origin_amount, Float, {
7
- lazy: true,
8
- default: :default_origin_amount,
9
- })
10
- attribute(:origin_currency, String, {
11
- lazy: true,
12
- default: :default_origin_currency,
13
- })
14
- attribute(:destination_amount, Float, {
15
- lazy: true,
16
- default: :default_destination_amount,
17
- })
18
- attribute(:destination_currency, String, {
19
- lazy: true,
20
- default: :default_destination_currency,
21
- })
22
- attribute(:flat_fee_in_orig_currency, Float, {
23
- lazy: true,
24
- default: :default_flat_fee_in_orig_currency,
25
- })
26
- attribute(:forex_fee_in_orig_currency, Float, {
27
- lazy: true,
28
- default: :default_forex_fee_in_orig_currency,
29
- })
30
- attribute(:payout_fee_in_orig_currency, Float, {
31
- lazy: true,
32
- default: :default_payout_fee_in_orig_currency,
33
- })
34
- attribute(:flat_fee_in_dest_currency, Float, {
35
- lazy: true,
36
- default: :default_flat_fee_in_dest_currency,
37
- })
38
- attribute(:payout_fee_in_dest_currency, Float, {
39
- lazy: true,
40
- default: :default_payout_fee_in_dest_currency,
41
- })
42
- attribute(:forex_fee_in_dest_currency, Float, {
43
- lazy: true,
44
- default: :default_forex_fee_in_dest_currency,
45
- })
46
-
47
- private
48
-
49
- %i[
50
- origin_amount
51
- origin_currency
52
- destination_amount
53
- destination_currency
54
- flat_fee_in_orig_currency
55
- forex_fee_in_orig_currency
56
- payout_fee_in_orig_currency
57
- flat_fee_in_dest_currency
58
- payout_fee_in_dest_currency
59
- forex_fee_in_dest_currency
60
- ].each do |var|
61
- define_method :"default_#{var}" do
62
- body[:response][var]
63
- end
64
- end
65
-
66
- end
67
- end
68
- end
69
- end
@@ -1,20 +0,0 @@
1
- module BloomRemitClient
2
- module Responses
3
- module Remittances
4
- class Create < Base
5
-
6
- attribute(:remittance, Object, {
7
- lazy: true,
8
- default: :default_remittance,
9
- })
10
-
11
- private
12
-
13
- def default_remittance
14
- Remittance.new(body[:remittance])
15
- end
16
-
17
- end
18
- end
19
- end
20
- end
@@ -1,21 +0,0 @@
1
- module BloomRemitClient
2
- module Responses
3
- module Senders
4
- class Create < Base
5
-
6
- attribute :sender, Object, lazy: true, default: :default_sender
7
-
8
- def success?
9
- raw_response.success?
10
- end
11
-
12
- private
13
-
14
- def default_sender
15
- User.new(body[:sender])
16
- end
17
-
18
- end
19
- end
20
- end
21
- end
@@ -1,20 +0,0 @@
1
- module BloomRemitClient
2
- module Responses
3
- module Txns
4
- class Create < Base
5
-
6
- attribute(:txn, Object, {
7
- lazy: true,
8
- default: :default_txn,
9
- })
10
-
11
- private
12
-
13
- def default_txn
14
- Remittance.new(body[:txn])
15
- end
16
-
17
- end
18
- end
19
- end
20
- end