Class: NxtHttpClient::Client

Inherits:
Object
  • Object
show all
Extended by:
ClientDsl
Defined in:
lib/nxt_http_client/client.rb,
lib/nxt_http_client/client/batch_patch.rb

Defined Under Namespace

Modules: BatchPatch

Constant Summary collapse

CACHE_STRATEGIES =
%w[global thread].freeze
HTTP_METHODS =
%w[get post patch put delete head].freeze

Instance Method Summary collapse

Methods included from ClientDsl

after_fire, around_fire, before_fire, clear_fire_callbacks, configure, log

Instance Method Details

#build_request(url, **opts) ⇒ Object



7
8
9
10
11
12
# File 'lib/nxt_http_client/client.rb', line 7

def build_request(url, **opts)
  url = build_url(opts, url)
  opts = build_headers(opts)

  Typhoeus::Request.new(url, **opts.symbolize_keys)
end

#fire(url = '', **opts, &block) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/nxt_http_client/client.rb', line 14

def fire(url = '', **opts, &block)
  response_handler = build_response_handler(opts[:response_handler], &block)
  request = build_request(url, **opts.except(:response_handler))

  current_error = nil
  result = nil

  setup_on_headers_callback(request, response_handler)
  setup_on_body_callback(request, response_handler)

  request.on_complete do |response|
    result = callback_or_response(response, response_handler)
  end

  run_before_fire_callbacks(request, response_handler)

  run_around_fire_callbacks(request, response_handler) do
    request.run
  rescue StandardError => error
    current_error = error
  end

  result = run_after_fire_callbacks(request, request.response, result, current_error)
  result || (raise current_error if current_error)

  result
end