class Wrappi::Executer

Attributes

cacher[R]
endpoint[R]
retryer[R]

Public Class Methods

call(*args) click to toggle source
# File lib/wrappi/executer.rb, line 4
def self.call(*args)
  new(*args).call
end
new(endpoint) click to toggle source
# File lib/wrappi/executer.rb, line 9
def initialize(endpoint)
  @endpoint = endpoint
  @retryer = Retryer.new(endpoint)
  @cacher = Cacher.new(endpoint)
end

Public Instance Methods

call() click to toggle source
# File lib/wrappi/executer.rb, line 15
def call
  if cache?
    cacher.call do
      request_with_retry
    end
  else
    request_with_retry
  end
end

Private Instance Methods

around_request() click to toggle source
# File lib/wrappi/executer.rb, line 37
def around_request
  endpoint.around_request || proc { |res, endpoint| res.call }
end
cache?() click to toggle source
# File lib/wrappi/executer.rb, line 27
def cache?
  cacher.cache?
end
make_request() click to toggle source
# File lib/wrappi/executer.rb, line 41
def make_request
  res = Response.new(endpoint.class) { Request.new(endpoint).call }
  around_request.call(res, endpoint)
  res.called? ? res : UncalledRequest.new
end
request_with_retry() click to toggle source
# File lib/wrappi/executer.rb, line 31
def request_with_retry
  retryer.call do
    make_request
  end
end