Class: EzClient::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/ezclient/client.rb

Constant Summary collapse

REQUEST_OPTION_KEYS =
%i[
  api_auth
  basic_auth
  cookies
  headers
  keep_alive
  max_retries
  on_complete
  on_error
  on_retry
  retry_exceptions
  ssl_context
  timeout
  follow
  error_wrapper
].freeze

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Client

Returns a new instance of Client.



21
22
23
24
# File 'lib/ezclient/client.rb', line 21

def initialize(options = {})
  self.request_options = options
  EzClient::CheckOptions.call(options, REQUEST_OPTION_KEYS)
end

Instance Method Details

#perform(*args, **kwargs) ⇒ Object



46
47
48
# File 'lib/ezclient/client.rb', line 46

def perform(*args, **kwargs)
  request(*args, **kwargs).perform
end

#perform!(*args, **kwargs) ⇒ Object



50
51
52
# File 'lib/ezclient/client.rb', line 50

def perform!(*args, **kwargs)
  request(*args, **kwargs).perform!
end

#request(verb, url, **options) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/ezclient/client.rb', line 26

def request(verb, url, **options)
  options = { **request_options, **options }

  keep_alive_timeout = options.delete(:keep_alive)
  api_auth = options.delete(:api_auth)
  ssl_context = options[:ssl_context]

  if keep_alive_timeout
    client = persistent_client_registry.for(
      url, ssl_context: ssl_context, timeout: keep_alive_timeout
    )
  else
    client = HTTP::Client.new
  end

  EzClient::Request.new(verb, url, client: client, **options).tap do |request|
    request.api_auth!(*api_auth) if api_auth
  end
end