Class: Mpp::X402::Facilitator
- Inherits:
-
Object
- Object
- Mpp::X402::Facilitator
- Extended by:
- T::Sig
- Defined in:
- lib/mpp/x402/facilitator.rb
Overview
HTTP client for an x402 facilitator /verify and /settle API.
resolve accepts:
* a URL string (public / unauthenticated facilitator)
* a config hash (`url:` plus optional `headers:` as a Hash or per-request proc)
* any object that responds to `#verify` and `#settle` (e.g. a CDP HTTPFacilitatorClient)
Instance Attribute Summary collapse
-
#base_url ⇒ Object
readonly
Returns the value of attribute base_url.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(url, headers: nil) ⇒ Facilitator
constructor
A new instance of Facilitator.
- #settle(payment_payload, payment_requirements) ⇒ Object
- #verify(payment_payload, payment_requirements) ⇒ Object
Constructor Details
#initialize(url, headers: nil) ⇒ Facilitator
Returns a new instance of Facilitator.
30 31 32 33 34 35 |
# File 'lib/mpp/x402/facilitator.rb', line 30 def initialize(url, headers: nil) @base_url = T.let(Mpp::Http::Headers.normalize_base_url(url), String) Kernel.raise ArgumentError, "x402 exact requires `facilitator`." if @base_url.empty? @headers = T.let(headers, T.untyped) end |
Instance Attribute Details
#base_url ⇒ Object (readonly)
Returns the value of attribute base_url.
22 23 24 |
# File 'lib/mpp/x402/facilitator.rb', line 22 def base_url @base_url end |
Class Method Details
.duck_type?(facilitator) ⇒ Boolean
56 57 58 |
# File 'lib/mpp/x402/facilitator.rb', line 56 def self.duck_type?(facilitator) !facilitator.nil? && facilitator.respond_to?(:verify) && facilitator.respond_to?(:settle) end |
.from_config(config) ⇒ Object
48 49 50 51 52 53 |
# File 'lib/mpp/x402/facilitator.rb', line 48 def self.from_config(config) cfg = Mpp::Http::Headers.symbolize(config) url = cfg[:url] || cfg[:base_url] || cfg[:baseUrl] new(url.to_s, headers: cfg[:headers]) end |
.resolve(facilitator) ⇒ Object
38 39 40 41 42 43 44 45 |
# File 'lib/mpp/x402/facilitator.rb', line 38 def self.resolve(facilitator) return facilitator if facilitator.is_a?(Facilitator) return new(facilitator) if facilitator.is_a?(String) && !facilitator.empty? return from_config(facilitator) if facilitator.is_a?(Hash) return facilitator if duck_type?(facilitator) Kernel.raise ArgumentError, "x402 exact requires `facilitator`." end |
Instance Method Details
#settle(payment_payload, payment_requirements) ⇒ Object
76 77 78 |
# File 'lib/mpp/x402/facilitator.rb', line 76 def settle(payment_payload, payment_requirements) post("/settle", payment_payload, payment_requirements) end |
#verify(payment_payload, payment_requirements) ⇒ Object
66 67 68 |
# File 'lib/mpp/x402/facilitator.rb', line 66 def verify(payment_payload, payment_requirements) post("/verify", payment_payload, payment_requirements) end |