class Object

Public Instance Methods

has_options(options={}, required=[]) click to toggle source
# File lib/redphone/helpers.rb, line 57
def has_options(options={}, required=[])
  required.each do |option|
    raise "You must supply a #{option}" unless options.has_key?(option) && !options[option].nil?
  end
end
http_request(options={}) click to toggle source
# File lib/redphone/helpers.rb, line 8
def http_request(options={})
  raise "You must supply a URI" if options[:uri].nil?
  method = options[:method] || "get"
  uri = URI.parse(options[:uri])
  user = options[:user]
  password = options[:password]
  headers = options[:headers] || Hash.new
  parameters = options[:parameters] || Hash.new
  body = options[:body]
  proxy_address = options[:proxy_address]
  proxy_port = options[:proxy_port]
  http = if @proxy_address.nil?
           Net::HTTP.new(uri.host, uri.port)
         else
           Net::HTTP::Proxy(@proxy_address, @proxy_port).new(uri.host, uri.port)
         end
  if options[:ssl] == true
    http.use_ssl = true
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  end
  request_uri = uri.request_uri
  unless parameters.empty?
    request_uri += "?"
    request_uri += parameters.map { |key, value| "#{key}=#{CGI.escape(value.to_s)}" }.join("&")
  end
  request = case method
  when "get"
    Net::HTTP::Get.new(request_uri)
  when "post"
    Net::HTTP::Post.new(request_uri)
  when "put"
    Net::HTTP::Put.new(request_uri)
  when "delete"
    Net::HTTP::Delete.new(request_uri)
  when "patch"
    Net::HTTP::Patch.new(request_uri)
  else
    raise "Unknown HTTP method: #{method}"
  end
  headers.each do |header, value|
    request.add_field(header, value)
  end
  if user && password
    request.basic_auth user, password
  end
  request.body = body
  http.request(request)
end