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, external_id: nil, memo: nil, fee_payer: false, chain_id: nil, extra: nil, mppx_scope: nil, body: nil) ⇒ Object
-
#initialize(method:, realm:, secret_key:, defaults: nil, events: nil) ⇒ MppHandler
constructor
A new instance of MppHandler.
- #on(name, handler = nil, &block) ⇒ Object
- #on_challenge_created(handler = nil, &block) ⇒ Object
- #on_payment_failed(handler = nil, &block) ⇒ Object
- #on_payment_success(handler = nil, &block) ⇒ Object
Constructor Details
#initialize(method:, realm:, secret_key:, defaults: nil, events: nil) ⇒ MppHandler
Returns a new instance of MppHandler.
26 27 28 29 30 31 32 |
# File 'lib/mpp/server/mpp_handler.rb', line 26 def initialize(method:, realm:, secret_key:, defaults: nil, events: 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]) @events = T.let(events || Mpp::Events.server_dispatcher, Mpp::Events::Dispatcher) 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, events: nil) ⇒ Object
36 37 38 39 40 41 42 43 |
# File 'lib/mpp/server/mpp_handler.rb', line 36 def self.create(method:, realm: nil, secret_key: nil, events: nil) new( method: method, realm: realm || Defaults.detect_realm, secret_key: secret_key || Defaults.detect_secret_key, events: events ) end |
Instance Method Details
#charge(authorization, amount, currency: nil, recipient: nil, expires: nil, description: nil, external_id: nil, memo: nil, fee_payer: false, chain_id: nil, extra: nil, mppx_scope: nil, body: nil) ⇒ Object
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 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/mpp/server/mpp_handler.rb', line 67 def charge(, amount, currency: nil, recipient: nil, expires: nil, description: nil, external_id: nil, memo: nil, fee_payer: false, chain_id: nil, extra: nil, mppx_scope: nil, body: 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 } request["externalId"] = external_id unless external_id.nil? 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 if mppx_scope mppx_scope.each do |k, v| raise ArgumentError, "mppx_scope must be a dict[str, str]" unless k.is_a?(String) && v.is_a?(String) end request["_mppx_scope"] = mppx_scope 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, events: @events, body: body ) end |
#on(name, handler = nil, &block) ⇒ Object
46 47 48 |
# File 'lib/mpp/server/mpp_handler.rb', line 46 def on(name, handler = nil, &block) @events.on(name, handler, &block) end |
#on_challenge_created(handler = nil, &block) ⇒ Object
51 52 53 |
# File 'lib/mpp/server/mpp_handler.rb', line 51 def on_challenge_created(handler = nil, &block) on(Mpp::Events::CHALLENGE_CREATED, handler, &block) end |
#on_payment_failed(handler = nil, &block) ⇒ Object
56 57 58 |
# File 'lib/mpp/server/mpp_handler.rb', line 56 def on_payment_failed(handler = nil, &block) on(Mpp::Events::PAYMENT_FAILED, handler, &block) end |
#on_payment_success(handler = nil, &block) ⇒ Object
61 62 63 |
# File 'lib/mpp/server/mpp_handler.rb', line 61 def on_payment_success(handler = nil, &block) on(Mpp::Events::PAYMENT_SUCCESS, handler, &block) end |