Class: E2B::Configuration

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

Overview

Configuration for E2B SDK

Supports environment variables:

- E2B_API_KEY: API key for authentication
- E2B_ACCESS_TOKEN: Access token (alternative auth)
- E2B_DOMAIN: Custom domain (default: e2b.app)
- E2B_API_URL: Custom API URL
- E2B_DEBUG: Enable debug logging

Examples:

E2B.configure do |config|
  config.api_key = "your-api-key"
  config.request_timeout = 120
end

Constant Summary collapse

DEFAULT_DOMAIN =

Default domain

"e2b.app"
DEFAULT_API_URL =

Default API base URL

"https://api.#{DEFAULT_DOMAIN}"
DEFAULT_REQUEST_TIMEOUT =

Default request timeout in seconds

60
DEFAULT_SANDBOX_TIMEOUT =

Default sandbox timeout in seconds

300
DEFAULT_TIMEOUT_MS =

Default timeout in milliseconds (backward compat)

300_000
DEFAULT_SANDBOX_TIMEOUT_MS =

Default sandbox timeout in milliseconds (backward compat)

300_000
MAX_SANDBOX_TIMEOUT_MS =

Maximum sandbox timeout (24 hours for Pro)

86_400_000

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api_key: nil, access_token: nil, domain: nil, api_url: nil, request_timeout: DEFAULT_REQUEST_TIMEOUT, timeout_ms: DEFAULT_TIMEOUT_MS, sandbox_timeout_ms: DEFAULT_SANDBOX_TIMEOUT_MS, debug: false) ⇒ Configuration

Initialize configuration

Parameters:

  • api_key (String, nil) (defaults to: nil)

    API key (defaults to E2B_API_KEY env var)

  • access_token (String, nil) (defaults to: nil)

    Access token

  • domain (String) (defaults to: nil)

    E2B domain

  • api_url (String) (defaults to: nil)

    API base URL

  • request_timeout (Integer) (defaults to: DEFAULT_REQUEST_TIMEOUT)

    Request timeout in seconds

  • timeout_ms (Integer) (defaults to: DEFAULT_TIMEOUT_MS)

    Request timeout in milliseconds (backward compat)

  • sandbox_timeout_ms (Integer) (defaults to: DEFAULT_SANDBOX_TIMEOUT_MS)

    Default sandbox timeout in milliseconds

  • debug (Boolean) (defaults to: false)

    Enable debug logging



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/e2b/configuration.rb', line 80

def initialize(
  api_key: nil,
  access_token: nil,
  domain: nil,
  api_url: nil,
  request_timeout: DEFAULT_REQUEST_TIMEOUT,
  timeout_ms: DEFAULT_TIMEOUT_MS,
  sandbox_timeout_ms: DEFAULT_SANDBOX_TIMEOUT_MS,
  debug: false
)
  @api_key = api_key || ENV["E2B_API_KEY"]
  @access_token = access_token || ENV["E2B_ACCESS_TOKEN"]
  @domain = domain || ENV["E2B_DOMAIN"] || DEFAULT_DOMAIN
  @debug = debug || ENV["E2B_DEBUG"]&.downcase == "true"
  @api_url = api_url || ENV["E2B_API_URL"] || self.class.default_api_url(@domain, debug: @debug)
  @request_timeout = request_timeout
  @timeout_ms = timeout_ms
  @sandbox_timeout_ms = sandbox_timeout_ms
  @default_template = nil
  @logger = nil
end

Instance Attribute Details

#access_tokenString?

Returns Access token (alternative auth method).

Returns:

  • (String, nil)

    Access token (alternative auth method)



44
45
46
# File 'lib/e2b/configuration.rb', line 44

def access_token
  @access_token
end

#api_keyString?

Returns API key for authentication.

Returns:

  • (String, nil)

    API key for authentication



41
42
43
# File 'lib/e2b/configuration.rb', line 41

def api_key
  @api_key
end

#api_urlString

Returns API base URL.

Returns:

  • (String)

    API base URL



50
51
52
# File 'lib/e2b/configuration.rb', line 50

def api_url
  @api_url
end

#debugBoolean

Returns Enable debug logging.

Returns:

  • (Boolean)

    Enable debug logging



62
63
64
# File 'lib/e2b/configuration.rb', line 62

def debug
  @debug
end

#default_templateString?

Returns Default template ID.

Returns:

  • (String, nil)

    Default template ID



65
66
67
# File 'lib/e2b/configuration.rb', line 65

def default_template
  @default_template
end

#domainString

Returns E2B domain.

Returns:

  • (String)

    E2B domain



47
48
49
# File 'lib/e2b/configuration.rb', line 47

def domain
  @domain
end

#loggerLogger?

Returns Optional logger.

Returns:

  • (Logger, nil)

    Optional logger



68
69
70
# File 'lib/e2b/configuration.rb', line 68

def logger
  @logger
end

#request_timeoutInteger

Returns Request timeout in seconds.

Returns:

  • (Integer)

    Request timeout in seconds



53
54
55
# File 'lib/e2b/configuration.rb', line 53

def request_timeout
  @request_timeout
end

#sandbox_timeout_msInteger

Returns Default sandbox timeout in milliseconds (backward compat).

Returns:

  • (Integer)

    Default sandbox timeout in milliseconds (backward compat)



59
60
61
# File 'lib/e2b/configuration.rb', line 59

def sandbox_timeout_ms
  @sandbox_timeout_ms
end

#timeout_msInteger

Returns Request timeout in milliseconds (backward compat).

Returns:

  • (Integer)

    Request timeout in milliseconds (backward compat)



56
57
58
# File 'lib/e2b/configuration.rb', line 56

def timeout_ms
  @timeout_ms
end

Class Method Details

.default_api_url(domain, debug: false) ⇒ Object



119
120
121
122
123
# File 'lib/e2b/configuration.rb', line 119

def self.default_api_url(domain, debug: false)
  return "http://localhost:3000" if debug

  "https://api.#{domain}"
end

Instance Method Details

#valid?Boolean

Check if configuration is valid

Returns:

  • (Boolean)


115
116
117
# File 'lib/e2b/configuration.rb', line 115

def valid?
  (!@api_key.nil? && !@api_key.empty?) || (!@access_token.nil? && !@access_token.empty?)
end

#validate!Object

Validate configuration

Raises:



105
106
107
108
109
110
# File 'lib/e2b/configuration.rb', line 105

def validate!
  if (@api_key.nil? || @api_key.empty?) && (@access_token.nil? || @access_token.empty?)
    raise ConfigurationError,
      "E2B API key is required. Set E2B_API_KEY environment variable or pass api_key option."
  end
end