Class: Mpp::Server::MppHandler
- Inherits:
-
Object
- Object
- Mpp::Server::MppHandler
- Extended by:
- T::Sig
- Defined in:
- lib/mpp/server/mpp_handler.rb
Instance Attribute Summary collapse
-
#defaults ⇒ Object
readonly
Returns the value of attribute defaults.
-
#method ⇒ Object
readonly
Returns the value of attribute method.
-
#realm ⇒ Object
readonly
Returns the value of attribute realm.
-
#secret_key ⇒ Object
readonly
Returns the value of attribute secret_key.
Class Method Summary collapse
Instance Method Summary collapse
- #charge(authorization, amount, currency: nil, recipient: nil, expires: nil, description: nil, memo: nil, fee_payer: false, chain_id: nil, extra: nil) ⇒ Object
-
#initialize(method:, realm:, secret_key:, defaults: nil) ⇒ MppHandler
constructor
A new instance of MppHandler.
Constructor Details
#initialize(method:, realm:, secret_key:, defaults: nil) ⇒ MppHandler
Returns a new instance of MppHandler.
26 27 28 29 30 31 |
# File 'lib/mpp/server/mpp_handler.rb', line 26 def initialize(method:, realm:, secret_key:, defaults: nil) @method = T.let(method, T.untyped) @realm = T.let(realm, String) @secret_key = T.let(secret_key, String) @defaults = T.let(defaults || {}, T::Hash[String, T.untyped]) end |
Instance Attribute Details
#defaults ⇒ Object (readonly)
Returns the value of attribute defaults.
23 24 25 |
# File 'lib/mpp/server/mpp_handler.rb', line 23 def defaults @defaults end |
#method ⇒ Object (readonly)
Returns the value of attribute method.
14 15 16 |
# File 'lib/mpp/server/mpp_handler.rb', line 14 def method @method end |
#realm ⇒ Object (readonly)
Returns the value of attribute realm.
17 18 19 |
# File 'lib/mpp/server/mpp_handler.rb', line 17 def realm @realm end |
#secret_key ⇒ Object (readonly)
Returns the value of attribute secret_key.
20 21 22 |
# File 'lib/mpp/server/mpp_handler.rb', line 20 def secret_key @secret_key end |
Class Method Details
.create(method:, realm: nil, secret_key: nil) ⇒ Object
35 36 37 38 39 40 41 |
# File 'lib/mpp/server/mpp_handler.rb', line 35 def self.create(method:, realm: nil, secret_key: nil) new( method: method, realm: realm || Defaults.detect_realm, secret_key: secret_key || Defaults.detect_secret_key ) end |
Instance Method Details
#charge(authorization, amount, currency: nil, recipient: nil, expires: nil, description: nil, memo: nil, fee_payer: false, chain_id: nil, extra: nil) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/mpp/server/mpp_handler.rb', line 45 def charge(, amount, currency: nil, recipient: nil, expires: nil, description: nil, memo: nil, fee_payer: false, chain_id: nil, extra: nil) intent = @method.intents["charge"] raise ArgumentError, "Method #{@method.name} does not support charge intent" unless intent resolved_currency = currency || (@method.respond_to?(:currency) ? @method.currency : nil) resolved_recipient = recipient || (@method.respond_to?(:recipient) ? @method.recipient : nil) raise ArgumentError, "currency must be set on the method or passed to charge()" unless resolved_currency raise ArgumentError, "recipient must be set on the method or passed to charge()" unless resolved_recipient decimals = @method.respond_to?(:decimals) ? @method.decimals : DEFAULT_DECIMALS base_amount = Mpp::Units.parse_units(amount, decimals).to_s request = { "amount" => base_amount, "currency" => resolved_currency, "recipient" => resolved_recipient } if extra extra.each do |k, v| raise ArgumentError, "extra must be a dict[str, str]" unless k.is_a?(String) && v.is_a?(String) end request["extra"] = extra end resolved_chain_id = chain_id resolved_chain_id ||= @method.chain_id if @method.respond_to?(:chain_id) if memo || fee_payer || !resolved_chain_id.nil? method_details = {} method_details["chainId"] = resolved_chain_id unless resolved_chain_id.nil? method_details["memo"] = memo if memo method_details["feePayer"] = true if fee_payer request["methodDetails"] = method_details end request = Mpp::Server::MethodHelper.transform_request(@method, request, nil) Verify.verify_or_challenge( authorization: , intent: intent, request: request, realm: @realm, secret_key: @secret_key, method: @method.name, description: description, expires: expires ) end |