Class: X402::Payments::Configuration
- Inherits:
-
Object
- Object
- X402::Payments::Configuration
- Defined in:
- lib/x402/payments/configuration.rb
Instance Attribute Summary collapse
-
#chain ⇒ Object
Returns the value of attribute chain.
-
#currency ⇒ Object
Returns the value of attribute currency.
-
#custom_chains ⇒ Object
Returns the value of attribute custom_chains.
-
#custom_tokens ⇒ Object
Returns the value of attribute custom_tokens.
-
#default_pay_to ⇒ Object
Returns the value of attribute default_pay_to.
-
#max_timeout_seconds ⇒ Object
Returns the value of attribute max_timeout_seconds.
-
#private_key ⇒ Object
Returns the value of attribute private_key.
-
#protocol_version ⇒ Object
Returns the value of attribute protocol_version.
-
#rpc_urls ⇒ Object
Returns the value of attribute rpc_urls.
-
#solana_compute_unit_limit ⇒ Object
Returns the value of attribute solana_compute_unit_limit.
-
#solana_compute_unit_price ⇒ Object
Returns the value of attribute solana_compute_unit_price.
Instance Method Summary collapse
- #chain_config(name) ⇒ Object
-
#initialize ⇒ Configuration
constructor
A new instance of Configuration.
- #register_chain(name:, chain_id:, standard: "eip155") ⇒ Object
- #register_token(chain:, symbol:, address:, decimals:, name:, version: "1") ⇒ Object
- #token_config(chain, symbol) ⇒ Object
- #validate! ⇒ Object
Constructor Details
#initialize ⇒ Configuration
Returns a new instance of Configuration.
10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/x402/payments/configuration.rb', line 10 def initialize @default_pay_to = ENV.fetch("X402_PAY_TO", nil) @private_key = ENV.fetch("X402_PRIVATE_KEY", nil) @chain = ENV.fetch("X402_CHAIN", "base-sepolia") @currency = ENV.fetch("X402_CURRENCY", "USDC") @max_timeout_seconds = ENV.fetch("X402_MAX_TIMEOUT_SECONDS", "600").to_i @protocol_version = ENV.fetch("X402_PROTOCOL_VERSION", "2").to_i @rpc_urls = {} @custom_chains = {} @custom_tokens = {} @solana_compute_unit_limit = ENV.fetch("X402_SOLANA_COMPUTE_UNIT_LIMIT", 200_000).to_i @solana_compute_unit_price = ENV.fetch("X402_SOLANA_COMPUTE_UNIT_PRICE", 1_000).to_i end |
Instance Attribute Details
#chain ⇒ Object
Returns the value of attribute chain.
6 7 8 |
# File 'lib/x402/payments/configuration.rb', line 6 def chain @chain end |
#currency ⇒ Object
Returns the value of attribute currency.
6 7 8 |
# File 'lib/x402/payments/configuration.rb', line 6 def currency @currency end |
#custom_chains ⇒ Object
Returns the value of attribute custom_chains.
6 7 8 |
# File 'lib/x402/payments/configuration.rb', line 6 def custom_chains @custom_chains end |
#custom_tokens ⇒ Object
Returns the value of attribute custom_tokens.
6 7 8 |
# File 'lib/x402/payments/configuration.rb', line 6 def custom_tokens @custom_tokens end |
#default_pay_to ⇒ Object
Returns the value of attribute default_pay_to.
6 7 8 |
# File 'lib/x402/payments/configuration.rb', line 6 def default_pay_to @default_pay_to end |
#max_timeout_seconds ⇒ Object
Returns the value of attribute max_timeout_seconds.
6 7 8 |
# File 'lib/x402/payments/configuration.rb', line 6 def max_timeout_seconds @max_timeout_seconds end |
#private_key ⇒ Object
Returns the value of attribute private_key.
6 7 8 |
# File 'lib/x402/payments/configuration.rb', line 6 def private_key @private_key end |
#protocol_version ⇒ Object
Returns the value of attribute protocol_version.
6 7 8 |
# File 'lib/x402/payments/configuration.rb', line 6 def protocol_version @protocol_version end |
#rpc_urls ⇒ Object
Returns the value of attribute rpc_urls.
6 7 8 |
# File 'lib/x402/payments/configuration.rb', line 6 def rpc_urls @rpc_urls end |
#solana_compute_unit_limit ⇒ Object
Returns the value of attribute solana_compute_unit_limit.
6 7 8 |
# File 'lib/x402/payments/configuration.rb', line 6 def solana_compute_unit_limit @solana_compute_unit_limit end |
#solana_compute_unit_price ⇒ Object
Returns the value of attribute solana_compute_unit_price.
6 7 8 |
# File 'lib/x402/payments/configuration.rb', line 6 def solana_compute_unit_price @solana_compute_unit_price end |
Instance Method Details
#chain_config(name) ⇒ Object
46 47 48 |
# File 'lib/x402/payments/configuration.rb', line 46 def chain_config(name) @custom_chains[name] end |
#register_chain(name:, chain_id:, standard: "eip155") ⇒ Object
24 25 26 27 28 29 30 31 32 33 |
# File 'lib/x402/payments/configuration.rb', line 24 def register_chain(name:, chain_id:, standard: "eip155") unless standard == "eip155" raise ConfigurationError, "Only eip155 (EVM) chains are supported for custom registration" end @custom_chains[name] = { chain_id: chain_id, standard: standard } end |
#register_token(chain:, symbol:, address:, decimals:, name:, version: "1") ⇒ Object
35 36 37 38 39 40 41 42 43 44 |
# File 'lib/x402/payments/configuration.rb', line 35 def register_token(chain:, symbol:, address:, decimals:, name:, version: "1") key = "#{chain}:#{symbol}" @custom_tokens[key] = { symbol: symbol, address: address, decimals: decimals, name: name, version: version } end |
#token_config(chain, symbol) ⇒ Object
50 51 52 53 |
# File 'lib/x402/payments/configuration.rb', line 50 def token_config(chain, symbol) key = "#{chain}:#{symbol}" @custom_tokens[key] end |
#validate! ⇒ Object
55 56 57 58 59 |
# File 'lib/x402/payments/configuration.rb', line 55 def validate! raise ConfigurationError, "default_pay_to is required" if default_pay_to.nil? || default_pay_to.empty? raise ConfigurationError, "private_key is required" if private_key.nil? || private_key.empty? raise ConfigurationError, "chain is required" if chain.nil? || chain.empty? end |