Class: RightScaleAPIHelper::Helper

Inherits:
Object
  • Object
show all
Defined in:
lib/RightScaleAPIHelper.rb

Instance Method Summary collapse

Constructor Details

#initialize(account, username, password, format = 'js', version = '1.0', verify_ssl = true) ⇒ Helper

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.


35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/RightScaleAPIHelper.rb', line 35

def initialize(, 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

Instance Method Details

#api_request(submitted_query) ⇒ Object



109
110
111
# File 'lib/RightScaleAPIHelper.rb', line 109

def api_request()
  is_full_path?() ?  : "#{@full_api_call}#{submitted_query}"
end

#delete(query) ⇒ Object



96
97
98
99
100
# 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 = {}) ⇒ Object

Do a GET request against RightScale API



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# 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) ⇒ Boolean

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

Returns:

  • (Boolean)


114
115
116
# File 'lib/RightScaleAPIHelper.rb', line 114

def is_full_path?(queryString)
  !!(queryString =~ /^http/i)
end

#post(query, values) ⇒ Object



86
87
88
89
90
91
92
93
94
# 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) ⇒ Object



102
103
104
105
106
107
# 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