Class: Relax2::RequestContext

Inherits:
Object
  • Object
show all
Defined in:
lib/relax2/request_context.rb

Defined Under Namespace

Classes: ActualHttpRequestHandler

Constant Summary collapse

NET_HTTP_REQUEST_MAP =
{
  'GET' => Net::HTTP::Get,
  'POST' => Net::HTTP::Post,
  'PUT' => Net::HTTP::Put,
  'PATCH' => Net::HTTP::Patch,
  'DELETE' => Net::HTTP::Delete
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(base_url:, interceptors:) ⇒ RequestContext

Returns a new instance of RequestContext.

Raises:



7
8
9
10
11
12
# File 'lib/relax2/request_context.rb', line 7

def initialize(base_url:, interceptors:)
  raise InvalidArgError, 'base_url must be specified' unless base_url

  @base_url = base_url
  @interceptors = interceptors
end

Instance Method Details

#call(request) ⇒ Relax2::Response

Parameters:

Returns:



16
17
18
19
20
21
22
# File 'lib/relax2/request_context.rb', line 16

def call(request)
  original_method = ActualHttpRequestHandler.new(@base_url)
  call_with_interceptors = @interceptors.reduce(original_method) do |m, interceptor|
    ->(req) { interceptor.call(req, m) }
  end
  call_with_interceptors.call(request)
end