class OMU::Support::RestClient::Request

Constants

HEADERS
SUPPORTED_HTTP_OPTIONS

Attributes

headers[R]
method[R]
url[R]

Public Class Methods

new(method, url, headers = {}, **http_options) click to toggle source

rubocop:disable Style/IfUnlessModifier

# File lib/omu_support/rest_client.rb, line 42
def initialize(method, url, headers = {}, **http_options)
  @method  = method
  @url     = url
  @headers = HEADERS.merge(headers)

  unless method.in?(SUPPORTED_HTTP_METHODS)
    raise HTTPMethodError, "unsupported HTTP method: #{method}"
  end

  build_http_object http_options
end

Public Instance Methods

execute(payload = nil) click to toggle source

rubocop:enable Style/IfUnlessModifier

# File lib/omu_support/rest_client.rb, line 55
def execute(payload = nil)
  klass = "Net::HTTP::#{method.capitalize}".constantize
  request = klass.new url, headers
  Response.new @http.request(request, payload)
end

Private Instance Methods

build_http_object(http_options) click to toggle source
# File lib/omu_support/rest_client.rb, line 67
def build_http_object(http_options)
  uri   = URI.parse(url)
  @http = Net::HTTP.new uri.host, uri.port

  unsupported_options = http_options.keys - SUPPORTED_HTTP_OPTIONS.keys
  unless unsupported_options.empty?
    raise UnsupportedHTTPOptionError, "unsupported HTTP options: #{unsupported_options}"
  end

  http_options.each { |option, value| @http.public_send "#{option}=", value }
end