class RightScaleAPIHelper::Helper

Public Class Methods

new(account, username, password, format = 'js', version = '1.0', verify_ssl = true) click to toggle source

Initialize the connection with account information. Return an object that can then later be used to make calls against the RightScale API without authenticating again. Inputs:

format = xml or js 
version = 1.0 # 1.5 to be supported soon
verify_ssl = true|false # For windows machines to prevent SSL error from being thrown.
# File lib/RightScaleAPIHelper.rb, line 35
def initialize(account, username, password, format = 'js', version = '1.0', verify_ssl = true)
  # Set Default Variables
  rs_url = "https://my.rightscale.com"
  api_url = '/api/acct/'
  @api_call = "#{api_url}#{account}"
  @full_api_call = "#{rs_url}#{@api_call}"
  @format=format
  @formatting = "?format=#{format}"
  @conn = Net::HTTP.new('my.rightscale.com', 443)
  @conn.use_ssl=true
  unless verify_ssl 
    @conn.verify_mode = OpenSSL::SSL::VERIFY_NONE
  end
  if version != '1.0'
    raise("Only version 1.0 is supported")
  end

  req = Net::HTTP::Get.new("#{@full_api_call}/login?api_version=#{version}")
  req.basic_auth( username, password )
  resp = @conn.request(req)
  if resp.code.to_i != 204
    puts resp.code
    raise("Failed to authenticate user.\n Http response code was #{resp.code}.")
  end
  cookie = resp.response['set-cookie']
  #puts "The response code was #{resp.code}"

  @headers = {
      "Cookie" => cookie,
      "X-API-VERSION" => "1.0",
      #"api_version" => "1.0",
  }
end

Public Instance Methods

api_request(submitted_query) click to toggle source
# File lib/RightScaleAPIHelper.rb, line 109
def api_request(submitted_query)
  is_full_path?(submitted_query) ? submitted_query : "#{@full_api_call}#{submitted_query}"
end
delete(query) click to toggle source
# File lib/RightScaleAPIHelper.rb, line 96
def delete(query)
  request_value = api_request(query) 
  req = Net::HTTP::Delete.new(request_value, @headers)
  resp = @conn.request(req)
end
get(query, values = {}) click to toggle source

Do a GET request against RightScale API

# File lib/RightScaleAPIHelper.rb, line 70
def get(query, values = {})
  begin
    #puts "#{@api_call}#{query}#{@formatting}"
    request_value = api_request(query) 

    req = Net::HTTP::Get.new("#{request_value}#{@formatting}", @headers)
    req.set_form_data(values)

    resp = @conn.request(req)
    
  rescue
    raise("Get query failed.\n Query string is #{request_value}#{@formatting}")
  end
  return resp
end
is_full_path?(queryString) click to toggle source

Function just to check if the path that is being passed is a full url or just the extension.

# File lib/RightScaleAPIHelper.rb, line 114
def is_full_path?(queryString)
  !!(queryString =~ /^http/i)
end
post(query, values) click to toggle source
# File lib/RightScaleAPIHelper.rb, line 86
def post(query, values)
  request_value = api_request(query) 
  req = Net::HTTP::Post.new(request_value, @headers)

  req.set_form_data(values)
  resp = @conn.request(req)

  return resp
end
put(query, values) click to toggle source
# File lib/RightScaleAPIHelper.rb, line 102
def put(query, values)
  request_value = api_request(query) 
  req = Net::HTTP::Put.new(request_value, @headers)
  req.set_form_data(values)
  resp = @conn.request(req)
end