Class: FlyIO::Configuration

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

Constant Summary collapse

DEFAULT_BASE_URL =
"https://api.machines.dev"
DEFAULT_GRAPHQL_URL =
"https://api.fly.io/graphql"
ATTRIBUTES =
%i[
  base_url graphql_url metrics_url authorization_value open_timeout read_timeout write_timeout request_timeout
  proxy user_agent max_retries base_retry_interval max_retry_interval retry_jitter logger adapter
  sleeper random retry_unsafe introspection
].freeze

Instance Method Summary collapse

Constructor Details

#initialize(token: nil, authorization: nil, authorization_mode: :bearer, base_url: DEFAULT_BASE_URL, graphql_url: DEFAULT_GRAPHQL_URL, metrics_url: "https://api.fly.io", open_timeout: 10, read_timeout: 30, write_timeout: 30, request_timeout: nil, proxy: nil, user_agent: "fly_io/#{FlyIO::VERSION}", max_retries: 2, base_retry_interval: 0.25, max_retry_interval: 5.0, retry_jitter: 0.25, logger: nil, adapter: nil, sleeper: ->(seconds) { sleep(seconds) }, random: Random.new, retry_unsafe: false, introspection: false) ⇒ Configuration

Returns a new instance of Configuration.



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/fly_io/configuration.rb', line 18

def initialize(token: nil, authorization: nil, authorization_mode: :bearer,
               base_url: DEFAULT_BASE_URL, graphql_url: DEFAULT_GRAPHQL_URL, metrics_url: "https://api.fly.io",
               open_timeout: 10, read_timeout: 30, write_timeout: 30, request_timeout: nil,
               proxy: nil, user_agent: "fly_io/#{FlyIO::VERSION}", max_retries: 2,
               base_retry_interval: 0.25, max_retry_interval: 5.0, retry_jitter: 0.25,
               logger: nil, adapter: nil, sleeper: ->(seconds) { sleep(seconds) },
               random: Random.new, retry_unsafe: false, introspection: false)
  @base_url = normalize_url(base_url, "base_url")
  @graphql_url = normalize_url(graphql_url, "graphql_url")
  @metrics_url = normalize_url(metrics_url, "metrics_url")
  @authorization_value = build_authorization(token, authorization, authorization_mode)
  @open_timeout = positive_number(open_timeout, "open_timeout")
  @read_timeout = positive_number(read_timeout, "read_timeout")
  @write_timeout = positive_number(write_timeout, "write_timeout")
  @request_timeout = request_timeout && positive_number(request_timeout, "request_timeout")
  @proxy = proxy
  @user_agent = String(user_agent).dup.freeze
  @max_retries = Integer(max_retries)
  @base_retry_interval = Float(base_retry_interval)
  @max_retry_interval = Float(max_retry_interval)
  @retry_jitter = Float(retry_jitter)
  @logger = logger
  @adapter = adapter
  @sleeper = sleeper
  @random = random
  @retry_unsafe = retry_unsafe
  @introspection = introspection
  validate_retry!
  freeze
end

Instance Method Details

#with(**overrides) ⇒ Object



49
50
51
52
53
54
# File 'lib/fly_io/configuration.rb', line 49

def with(**overrides)
  current = ATTRIBUTES.to_h { |name| [name, public_send(name)] }
  authorization_value = current.delete(:authorization_value)
  current[:authorization] = authorization_value
  self.class.new(**current, **overrides)
end