class Vra::Http::Request

Attributes

params[R]

Public Class Methods

new(params) click to toggle source
# File lib/vra/http.rb, line 28
def initialize(params)
  @params = params
end

Public Instance Methods

call() click to toggle source
# File lib/vra/http.rb, line 44
def call
  uri = URI(params[:url]) || raise(":url required")

  ssl_params = { use_ssl: uri.scheme == "https" }
  ssl_params[:verify_mode] = OpenSSL::SSL::VERIFY_NONE unless verify_ssl?

  Net::HTTP.start(uri.host, uri.port, ssl_params) do |http|
    request = http_request(params[:method], uri)
    request.initialize_http_header(params[:headers] || {})
    request.body = params[:payload] || ""

    Response.new(http.request(request))
  end
end
http_request(method, uri) click to toggle source
# File lib/vra/http.rb, line 59
def http_request(method, uri)
  type = {
    get: Net::HTTP::Get,
    head: Net::HTTP::Head,
    post: Net::HTTP::Post,
  }.fetch(method, nil)

  raise "Unknown HTTP method #{method}!" unless type

  type.new(uri)
end
redirect_to(location) click to toggle source
# File lib/vra/http.rb, line 36
def redirect_to(location)
  new(url: location)
end
redirectable?() click to toggle source
# File lib/vra/http.rb, line 32
def redirectable?
  %i{get head}.include?(params[:method])
end
see_other(location) click to toggle source
# File lib/vra/http.rb, line 40
def see_other(location)
  redirect_to(location).new(method: :get)
end

Protected Instance Methods

new(new_params) click to toggle source
# File lib/vra/http.rb, line 73
def new(new_params)
  self.class.new(params.dup.merge(new_params))
end
verify_ssl?() click to toggle source
# File lib/vra/http.rb, line 77
def verify_ssl?
  return true if params[:verify_ssl].nil?

  params[:verify_ssl]
end