class BlueprintAgreement::Utils::Requester

Constants

REQUEST_OPTIONS

Attributes

current_request[R]
server[R]

Public Class Methods

new(request, server) click to toggle source
# File lib/blueprint_agreement/utils/requester.rb, line 16
def initialize(request, server)
  @current_request = request
  @request_option = REQUEST_OPTIONS[request_method]
  raise BlueprintAgreement::MethodNotFound if @request_option.nil?

  @server = server
end

Public Instance Methods

perform() click to toggle source
# File lib/blueprint_agreement/utils/requester.rb, line 24
def perform
  begin
    Net::HTTP.start(request_path.host, request_path.port) do |http|
      request = @request_option.new request_path
      set_form_data(request)
      set_headers(request)

      request_logger.for({
        body: current_request.body,
        headers: current_request.headers,
        path: request_path,
        request_method: request_method
      })

      http.request(request).tap do |http_request|
        puts request_logger.print if ENV["AGREEMENT_LOUD"]
        raise EndpointNotFound.new(http_request) if http_request.code == "404"
      end
    end
  rescue Errno::ECONNREFUSED
    sleep 1
    perform
  rescue Errno::ECONNRESET
    sleep 1
    perform
  end
end

Private Instance Methods

request_logger() click to toggle source
# File lib/blueprint_agreement/utils/requester.rb, line 54
def request_logger
  Utils::RequestLogger.instance
end
request_method() click to toggle source
# File lib/blueprint_agreement/utils/requester.rb, line 70
def request_method
  @request_method ||= current_request.request_method
end
request_path() click to toggle source
# File lib/blueprint_agreement/utils/requester.rb, line 74
def request_path
  @request_path ||= URI.join(server.host, current_request.fullpath)
end
set_form_data(request) click to toggle source
# File lib/blueprint_agreement/utils/requester.rb, line 64
def set_form_data(request)
  if ['POST', 'PUT', 'PATCH'].include? request_method
    request.body = current_request.body
  end
end
set_headers(request) click to toggle source
# File lib/blueprint_agreement/utils/requester.rb, line 58
def set_headers(request)
  current_request.headers.each do |key, value|
    request[key] = value
  end
end