stellar_base-rails 3.1.0 → 4.2.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.
- checksums.yaml +4 -4
- data/README.md +2 -0
- data/app/concepts/stellar_base/deposit_requests/contracts/create.rb +1 -0
- data/app/concepts/stellar_base/deposit_requests/operations/create.rb +22 -22
- data/app/concepts/stellar_base/fee_requests/operations/show.rb +2 -2
- data/app/concepts/stellar_base/withdrawal_requests/contracts/create.rb +3 -2
- data/app/concepts/stellar_base/withdrawal_requests/operations/create.rb +19 -30
- data/app/controllers/stellar_base/withdraw_controller.rb +0 -1
- data/app/representers/stellar_base/deposit_request_representer.rb +7 -1
- data/app/representers/stellar_base/withdrawal_request_representer.rb +0 -1
- data/app/services/stellar_base/bridge_callbacks/process.rb +1 -2
- data/app/services/stellar_base/configured_class_runner.rb +4 -1
- data/app/services/stellar_base/deposit_requests/determine_eta.rb +22 -0
- data/app/services/stellar_base/deposit_requests/determine_how.rb +4 -3
- data/app/services/stellar_base/determine_extra_info.rb +14 -0
- data/app/services/stellar_base/fee_requests/call_withdraw_fee_fixed_quote_from.rb +42 -0
- data/app/services/stellar_base/get_callback_from.rb +13 -0
- data/app/services/stellar_base/withdrawal_requests/call_fee_fixed_from.rb +29 -0
- data/app/services/stellar_base/withdrawal_requests/call_on_withdraw.rb +1 -3
- data/app/services/stellar_base/withdrawal_requests/determine_max_amount.rb +2 -2
- data/app/twins/stellar_base/withdrawal_request_twin.rb +0 -1
- data/db/migrate/20190808014913_remove_fee_network.rb +8 -0
- data/lib/stellar_base/version.rb +1 -1
- metadata +23 -12
- data/app/services/stellar_base/fee_requests/call_fee_from.rb +0 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1bdb1de1dfc55634223730e54bb842bfafd076cc22eac56dbc11357eaeabbb6d
|
4
|
+
data.tar.gz: 0275c78f1e5ab0d14a0a20145c4cd9b0b26895b53d37d6ef9e3bfdc73b9a4f1a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5900cbcd9b5c4069feb88c0cc829a8bfddef0b0f71addf8491b6c2b2fe18edbf238ed5cf40e883d915e813440b59f0951d06daa41dc9430a42fc3321a8258e0c
|
7
|
+
data.tar.gz: 55c79dadfa9626290bf42a081d6d95537295e147b82176cabca5df41c630fcc2950653df886b60a0335272de9d4d014e04c5862eefd234a09a33fbbe63806dfb
|
data/README.md
CHANGED
@@ -3,15 +3,14 @@ module StellarBase
|
|
3
3
|
module Operations
|
4
4
|
class Create < ApplicationOperation
|
5
5
|
|
6
|
-
DEFAULT_ETA = (10 * 60).freeze
|
7
|
-
|
8
6
|
step self::Policy::Pundit(DepositRequestPolicy, :create?)
|
9
7
|
step Model(DepositRequest, :new)
|
8
|
+
step :find_depositable_asset_details!
|
10
9
|
step :setup_params!
|
10
|
+
step :set_extra_info!
|
11
11
|
step Contract::Build(constant: Contracts::Create)
|
12
12
|
step Contract::Validate(key: :deposit_request)
|
13
13
|
step Contract::Persist(method: :sync)
|
14
|
-
step :find_depositable_asset_details!
|
15
14
|
step :determine_how!
|
16
15
|
step :determine_max_amount!
|
17
16
|
success :set_defaults!
|
@@ -30,34 +29,35 @@ module StellarBase
|
|
30
29
|
|
31
30
|
def find_depositable_asset_details!(options, params:, **)
|
32
31
|
details = FindDepositableAsset.(params[:deposit_request][:asset_code])
|
33
|
-
|
32
|
+
options[:asset_details] = details.presence || {}
|
34
33
|
end
|
35
34
|
|
36
|
-
def determine_how!(options, params:, **)
|
37
|
-
|
38
|
-
|
39
|
-
DetermineHow.(details[:how_from], params[:deposit_request])
|
35
|
+
def determine_how!(options, params:, asset_details:, model:, **)
|
36
|
+
model.deposit_address =
|
37
|
+
DetermineHow.(asset_details[:how_from], params[:deposit_request])
|
40
38
|
end
|
41
39
|
|
42
|
-
def
|
43
|
-
|
44
|
-
|
45
|
-
ConfiguredClassRunner.(details[:max_amount_from]) || 0
|
40
|
+
def set_extra_info!(ctx, params:, asset_details:, **)
|
41
|
+
params[:deposit_request][:extra_info] =
|
42
|
+
DetermineExtraInfo.(asset_details).to_json
|
46
43
|
end
|
47
44
|
|
48
|
-
def
|
49
|
-
|
45
|
+
def determine_max_amount!(options, params:, asset_details:, model:, **)
|
46
|
+
model.max_amount =
|
47
|
+
ConfiguredClassRunner.(asset_details[:max_amount_from]) || 0
|
48
|
+
end
|
50
49
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
50
|
+
def set_defaults!(options, params:, model:, asset_details:, **)
|
51
|
+
model.asset_type = asset_details[:type]
|
52
|
+
model.issuer = asset_details[:issuer]
|
53
|
+
model.eta =
|
54
|
+
DetermineEta.(asset_details[:eta_from], params[:deposit_request])
|
55
|
+
model.min_amount = 0.0
|
55
56
|
|
56
57
|
# Make Deposits free unless we want it configured
|
57
|
-
#
|
58
|
-
|
59
|
-
|
60
|
-
options["model"].fee_percent = details[:fee_percent] || 0.0
|
58
|
+
# TODO: this should come from `CallDepositFeeFrom.(params, asset_details)`
|
59
|
+
model.fee_fixed = asset_details[:fee_fixed] || 0.0
|
60
|
+
model.fee_percent = asset_details[:fee_percent] || 0.0
|
61
61
|
end
|
62
62
|
|
63
63
|
def memo_type_from(params)
|
@@ -29,9 +29,9 @@ module StellarBase
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def set_fee_response!(options, model:, asset_details:, params:, **)
|
32
|
-
model.fee_response = FeeRequests::
|
32
|
+
model.fee_response = FeeRequests::CallWithdrawFeeFixedQuoteFrom.(
|
33
33
|
fee_request: model,
|
34
|
-
|
34
|
+
fee_fixed_quote_from: asset_details[:fee_fixed_quote_from],
|
35
35
|
)
|
36
36
|
end
|
37
37
|
|
@@ -7,16 +7,17 @@ module StellarBase
|
|
7
7
|
property :asset_code
|
8
8
|
property :dest
|
9
9
|
property :dest_extra
|
10
|
-
property :
|
10
|
+
property :fee_fixed
|
11
11
|
|
12
12
|
validates(
|
13
13
|
:asset_type,
|
14
14
|
:asset_code,
|
15
15
|
:dest,
|
16
|
-
:
|
16
|
+
:fee_fixed,
|
17
17
|
presence: true,
|
18
18
|
)
|
19
19
|
validate :check_valid_asset_code
|
20
|
+
validates(:fee_fixed, numericality: {greater_than_or_equal_to: 0})
|
20
21
|
|
21
22
|
def check_valid_asset_code
|
22
23
|
asset_codes = StellarBase.configuration.withdrawable_assets
|
@@ -10,10 +10,11 @@ module StellarBase
|
|
10
10
|
failure :set_policy_error!
|
11
11
|
step Model(WithdrawalRequest, :new)
|
12
12
|
step :setup_params!
|
13
|
+
step :find_withdrawal_asset_details!
|
14
|
+
step :set_fee_fixed!
|
13
15
|
step Contract::Build(constant: Contracts::Create)
|
14
16
|
step Contract::Validate(key: :withdrawal_request)
|
15
17
|
step Contract::Persist(method: :sync)
|
16
|
-
step :find_withdrawal_asset_details!
|
17
18
|
success :set_defaults!
|
18
19
|
step Contract::Persist(method: :save)
|
19
20
|
|
@@ -29,38 +30,26 @@ module StellarBase
|
|
29
30
|
})
|
30
31
|
end
|
31
32
|
|
32
|
-
def find_withdrawal_asset_details!(
|
33
|
-
|
34
|
-
|
35
|
-
|
33
|
+
def find_withdrawal_asset_details!(ctx, params:, **)
|
34
|
+
asset_code = params[:withdrawal_request][:asset_code]
|
35
|
+
details = FindWithdrawableAsset.(asset_code)
|
36
|
+
ctx["asset_details"] = details.presence || {}
|
36
37
|
end
|
37
38
|
|
38
|
-
def
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
withdrawal_asset_details[:network],
|
43
|
-
params[:withdrawal_request][:fee_network],
|
44
|
-
)
|
45
|
-
|
46
|
-
options["model"].issuer = withdrawal_asset_details[:issuer]
|
47
|
-
options["model"].account_id =
|
48
|
-
StellarBase.configuration.distribution_account
|
49
|
-
options["model"].memo_type = "text"
|
50
|
-
options["model"].memo = GenMemoFor.(WithdrawalRequest)
|
51
|
-
options["model"].eta = DEFAULT_ETA
|
52
|
-
options["model"].min_amount = 0.0
|
53
|
-
options["model"].max_amount =
|
54
|
-
DetermineMaxAmount.(withdrawal_asset_details[:max_amount_from])
|
55
|
-
|
56
|
-
# TODO: This should come from `CallFeeFrom.(details[:fee_from])`
|
57
|
-
# or dest_extra
|
58
|
-
options["model"].fee_fixed =
|
59
|
-
DetermineFee.(withdrawal_asset_details[:fee_fixed])
|
39
|
+
def set_fee_fixed!(ctx, params:, asset_details:, **)
|
40
|
+
params[:withdrawal_request][:fee_fixed] =
|
41
|
+
CallFeeFixedFrom.(params[:withdrawal_request], asset_details)
|
42
|
+
end
|
60
43
|
|
61
|
-
|
62
|
-
|
63
|
-
|
44
|
+
def set_defaults!(options, params:, asset_details:, model:, **)
|
45
|
+
model.issuer = asset_details[:issuer]
|
46
|
+
model.account_id = StellarBase.configuration.distribution_account
|
47
|
+
model.memo_type = "text"
|
48
|
+
model.memo = GenMemoFor.(WithdrawalRequest)
|
49
|
+
model.eta = DEFAULT_ETA
|
50
|
+
model.min_amount = 0.0
|
51
|
+
model.max_amount = DetermineMaxAmount.(asset_details[:max_amount_from])
|
52
|
+
model.fee_percent = DetermineFee.(asset_details[:fee_percent])
|
64
53
|
end
|
65
54
|
|
66
55
|
end
|
@@ -7,7 +7,13 @@ module StellarBase
|
|
7
7
|
property :max_amount
|
8
8
|
property :fee_fixed
|
9
9
|
property :fee_percent
|
10
|
-
property :extra_info
|
10
|
+
property :extra_info, exec_context: :decorator
|
11
|
+
|
12
|
+
def extra_info
|
13
|
+
::JSON.parse(represented.extra_info)
|
14
|
+
rescue
|
15
|
+
{}
|
16
|
+
end
|
11
17
|
|
12
18
|
end
|
13
19
|
end
|
@@ -9,8 +9,7 @@ module StellarBase
|
|
9
9
|
|
10
10
|
def self.callback_class
|
11
11
|
on_bridge_callback = StellarBase.configuration.on_bridge_callback
|
12
|
-
|
13
|
-
on_bridge_callback.constantize
|
12
|
+
GetCallbackFrom.(on_bridge_callback)
|
14
13
|
rescue NameError
|
15
14
|
error_message = [
|
16
15
|
"StellarBase.on_bridge_callback isn't configured or the",
|
@@ -5,7 +5,10 @@ module StellarBase
|
|
5
5
|
|
6
6
|
def self.call(class_name)
|
7
7
|
# TODO: how do we handle errors
|
8
|
-
|
8
|
+
if class_name.present?
|
9
|
+
callback = GetCallbackFrom.(class_name)
|
10
|
+
return callback.send(:call)
|
11
|
+
end
|
9
12
|
DEFAULT
|
10
13
|
end
|
11
14
|
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module StellarBase
|
2
|
+
module DepositRequests
|
3
|
+
class DetermineEta
|
4
|
+
|
5
|
+
DEFAULT = nil
|
6
|
+
|
7
|
+
def self.call(class_name, params)
|
8
|
+
# TODO: how do we handle errors
|
9
|
+
if class_name.present?
|
10
|
+
callback = GetCallbackFrom.(class_name)
|
11
|
+
unless callback.method(:call).arity.zero?
|
12
|
+
return callback.send(:call, params)
|
13
|
+
end
|
14
|
+
|
15
|
+
return callback.send(:call)
|
16
|
+
end
|
17
|
+
DEFAULT
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -7,11 +7,12 @@ module StellarBase
|
|
7
7
|
def self.call(class_name, params)
|
8
8
|
# TODO: how do we handle errors
|
9
9
|
if class_name.present?
|
10
|
-
|
11
|
-
|
10
|
+
callback = GetCallbackFrom.(class_name)
|
11
|
+
unless callback.method(:call).arity.zero?
|
12
|
+
return callback.send(:call, params)
|
12
13
|
end
|
13
14
|
|
14
|
-
return
|
15
|
+
return callback.send(:call)
|
15
16
|
end
|
16
17
|
DEFAULT
|
17
18
|
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module StellarBase
|
2
|
+
module FeeRequests
|
3
|
+
class CallWithdrawFeeFixedQuoteFrom
|
4
|
+
|
5
|
+
FEE_FIXED_QUOTE_FROM_ERROR = "`fee_fixed_quote_from` must be a string of an object " \
|
6
|
+
"that responds to `.call` or the object itself".freeze
|
7
|
+
|
8
|
+
def self.call(fee_request:, fee_fixed_quote_from:)
|
9
|
+
asset_details = asset_details_from(fee_request)
|
10
|
+
|
11
|
+
if fee = asset_details[:fee_fixed]
|
12
|
+
return fee
|
13
|
+
end
|
14
|
+
|
15
|
+
return 0.0 if fee_fixed_quote_from.nil?
|
16
|
+
|
17
|
+
callback = callback_from(fee_fixed_quote_from)
|
18
|
+
callback.(fee_request)
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.callback_from(fee_fixed_quote_from)
|
22
|
+
fee_fixed_quote_from = GetCallbackFrom.(fee_fixed_quote_from)
|
23
|
+
|
24
|
+
if !fee_fixed_quote_from.respond_to?(:call)
|
25
|
+
fail ArgumentError, FEE_FIXED_QUOTE_FROM_ERROR
|
26
|
+
end
|
27
|
+
|
28
|
+
fee_fixed_quote_from
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def self.asset_details_from(fee_request)
|
34
|
+
FindAssetDetails.(
|
35
|
+
operation: "withdraw",
|
36
|
+
asset_code: fee_request.asset_code,
|
37
|
+
)
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module StellarBase
|
2
|
+
module WithdrawalRequests
|
3
|
+
class CallFeeFixedFrom
|
4
|
+
|
5
|
+
CALLBACK_CONFIG_NAME = :fee_fixed_from
|
6
|
+
INVALID_FEE_MESSAGE =
|
7
|
+
"`fee_fixed_from` must return a value >= 0".freeze
|
8
|
+
|
9
|
+
def self.call(params, asset_details)
|
10
|
+
if fee_fixed = asset_details[:fee_fixed]
|
11
|
+
return fee_fixed
|
12
|
+
end
|
13
|
+
|
14
|
+
callback = GetCallbackFrom.(asset_details[CALLBACK_CONFIG_NAME])
|
15
|
+
|
16
|
+
return 0.0 if callback.nil?
|
17
|
+
|
18
|
+
fee_fixed = callback.(params, asset_details)
|
19
|
+
|
20
|
+
if fee_fixed.nil?
|
21
|
+
fail ArgumentError, INVALID_FEE_MESSAGE
|
22
|
+
end
|
23
|
+
|
24
|
+
fee_fixed
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -15,9 +15,7 @@ module StellarBase
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def self.callback_from(on_withdraw)
|
18
|
-
|
19
|
-
on_withdraw = on_withdraw.constantize
|
20
|
-
end
|
18
|
+
on_withdraw = GetCallbackFrom.(on_withdraw)
|
21
19
|
|
22
20
|
if !on_withdraw.respond_to?(:call)
|
23
21
|
fail ArgumentError, ON_WITHDRAW_ERROR
|
data/lib/stellar_base/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stellar_base-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ace Subido
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-08-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: disposable
|
@@ -112,30 +112,30 @@ dependencies:
|
|
112
112
|
name: sidekiq
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- - "
|
115
|
+
- - ">="
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: '5.
|
117
|
+
version: '5.0'
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- - "
|
122
|
+
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: '5.
|
124
|
+
version: '5.0'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: rails
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: '
|
131
|
+
version: '6.0'
|
132
132
|
type: :runtime
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version: '
|
138
|
+
version: '6.0'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: representable
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -170,14 +170,14 @@ dependencies:
|
|
170
170
|
requirements:
|
171
171
|
- - "~>"
|
172
172
|
- !ruby/object:Gem::Version
|
173
|
-
version: '
|
173
|
+
version: '3.0'
|
174
174
|
type: :runtime
|
175
175
|
prerelease: false
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
178
178
|
- - "~>"
|
179
179
|
- !ruby/object:Gem::Version
|
180
|
-
version: '
|
180
|
+
version: '3.0'
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
182
|
name: toml-rb
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -199,6 +199,9 @@ dependencies:
|
|
199
199
|
- - ">="
|
200
200
|
- !ruby/object:Gem::Version
|
201
201
|
version: '2.0'
|
202
|
+
- - "<"
|
203
|
+
- !ruby/object:Gem::Version
|
204
|
+
version: '2.1'
|
202
205
|
type: :runtime
|
203
206
|
prerelease: false
|
204
207
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -206,6 +209,9 @@ dependencies:
|
|
206
209
|
- - ">="
|
207
210
|
- !ruby/object:Gem::Version
|
208
211
|
version: '2.0'
|
212
|
+
- - "<"
|
213
|
+
- !ruby/object:Gem::Version
|
214
|
+
version: '2.1'
|
209
215
|
- !ruby/object:Gem::Dependency
|
210
216
|
name: trailblazer-rails
|
211
217
|
requirement: !ruby/object:Gem::Requirement
|
@@ -484,6 +490,7 @@ files:
|
|
484
490
|
- app/services/stellar_base/bridge_callbacks/verify_mac_payload.rb
|
485
491
|
- app/services/stellar_base/configured_class_runner.rb
|
486
492
|
- app/services/stellar_base/deposit_requests/create_deposit.rb
|
493
|
+
- app/services/stellar_base/deposit_requests/determine_eta.rb
|
487
494
|
- app/services/stellar_base/deposit_requests/determine_how.rb
|
488
495
|
- app/services/stellar_base/deposit_requests/find_config.rb
|
489
496
|
- app/services/stellar_base/deposit_requests/find_deposit_request.rb
|
@@ -496,13 +503,16 @@ files:
|
|
496
503
|
- app/services/stellar_base/deposit_requests/send_asset.rb
|
497
504
|
- app/services/stellar_base/deposit_requests/trigger.rb
|
498
505
|
- app/services/stellar_base/deposit_requests/update_deposit.rb
|
499
|
-
- app/services/stellar_base/
|
506
|
+
- app/services/stellar_base/determine_extra_info.rb
|
507
|
+
- app/services/stellar_base/fee_requests/call_withdraw_fee_fixed_quote_from.rb
|
500
508
|
- app/services/stellar_base/find_asset_details.rb
|
501
509
|
- app/services/stellar_base/gen_memo_for.rb
|
502
510
|
- app/services/stellar_base/gen_random_string.rb
|
511
|
+
- app/services/stellar_base/get_callback_from.rb
|
503
512
|
- app/services/stellar_base/init_asset_sending_client.rb
|
504
513
|
- app/services/stellar_base/init_stellar_client.rb
|
505
514
|
- app/services/stellar_base/subscribe_account.rb
|
515
|
+
- app/services/stellar_base/withdrawal_requests/call_fee_fixed_from.rb
|
506
516
|
- app/services/stellar_base/withdrawal_requests/call_on_withdraw.rb
|
507
517
|
- app/services/stellar_base/withdrawal_requests/determine_fee.rb
|
508
518
|
- app/services/stellar_base/withdrawal_requests/determine_max_amount.rb
|
@@ -523,6 +533,7 @@ files:
|
|
523
533
|
- db/migrate/20181003072138_create_stellar_base_account_subscriptions.rb
|
524
534
|
- db/migrate/20181210043919_add_unique_index_to_deposits.rb
|
525
535
|
- db/migrate/20181217090323_create_stellar_transactions_and_operations.rb
|
536
|
+
- db/migrate/20190808014913_remove_fee_network.rb
|
526
537
|
- lib/stellar_base-rails.rb
|
527
538
|
- lib/stellar_base.rb
|
528
539
|
- lib/stellar_base/engine.rb
|
@@ -558,7 +569,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
558
569
|
- !ruby/object:Gem::Version
|
559
570
|
version: '0'
|
560
571
|
requirements: []
|
561
|
-
rubygems_version: 3.0.
|
572
|
+
rubygems_version: 3.0.3
|
562
573
|
signing_key:
|
563
574
|
specification_version: 4
|
564
575
|
summary: Mountable Stellar API Endpoints for Rails
|
@@ -1,28 +0,0 @@
|
|
1
|
-
module StellarBase
|
2
|
-
module FeeRequests
|
3
|
-
class CallFeeFrom
|
4
|
-
|
5
|
-
FEE_FROM_ERROR = "`fee_from` must be a string of an object " \
|
6
|
-
"that responds to `.call` or the object itself".freeze
|
7
|
-
|
8
|
-
def self.call(fee_request:, fee_from:)
|
9
|
-
return 0 if fee_from.nil?
|
10
|
-
callback = callback_from(fee_from)
|
11
|
-
callback.(fee_request)
|
12
|
-
end
|
13
|
-
|
14
|
-
def self.callback_from(fee_from)
|
15
|
-
if fee_from.respond_to?(:constantize)
|
16
|
-
fee_from = fee_from.constantize
|
17
|
-
end
|
18
|
-
|
19
|
-
if !fee_from.respond_to?(:call)
|
20
|
-
fail ArgumentError, FEE_FROM_ERROR
|
21
|
-
end
|
22
|
-
|
23
|
-
fee_from
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|