Class: X402::Payments::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/x402/payments/configuration.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

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

#chainObject

Returns the value of attribute chain.



6
7
8
# File 'lib/x402/payments/configuration.rb', line 6

def chain
  @chain
end

#currencyObject

Returns the value of attribute currency.



6
7
8
# File 'lib/x402/payments/configuration.rb', line 6

def currency
  @currency
end

#custom_chainsObject

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_tokensObject

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_toObject

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_secondsObject

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_keyObject

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_versionObject

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_urlsObject

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_limitObject

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_priceObject

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

Raises:



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