Class: Fog::IBM::Connection

Inherits:
XML::Connection show all
Defined in:
lib/fog/ibm/core.rb

Instance Method Summary collapse

Constructor Details

#initialize(user, password) ⇒ Connection

Returns a new instance of Connection.



19
20
21
22
23
24
25
# File 'lib/fog/ibm/core.rb', line 19

def initialize(user, password)
  @user = user
  @password = password
  @endpoint = URI.parse('https://www-147.ibm.com/computecloud/enterprise/api/rest/20100331')
  @base_path = @endpoint.path
  super("#{@endpoint.scheme}://#{@endpoint.host}:#{@endpoint.port}")
end

Instance Method Details

#auth_headerObject



44
45
46
# File 'lib/fog/ibm/core.rb', line 44

def auth_header
  @auth_header ||= 'Basic ' + Base64.encode64("#{@user}:#{@password}").gsub("\n",'')
end

#form_encode(params) ⇒ Object



48
49
50
# File 'lib/fog/ibm/core.rb', line 48

def form_encode(params)
  params.reject {|k, v| v.nil? }.map {|pair| pair.map {|x| URI.escape(x.to_s) }.join('=') }.join('&')
end

#request(options) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/fog/ibm/core.rb', line 27

def request(options)
  options[:path] = @base_path + options[:path]
  options[:headers] ||= {}
  options[:headers]['Authorization'] = auth_header
  options[:headers]['Accept'] = 'application/json'
  options[:headers]['Accept-Encoding'] = 'gzip'
  unless options[:body].nil?
    options[:headers]['Content-Type'] = 'application/x-www-form-urlencoded'
    options[:body] = form_encode(options[:body])
  end
  response = super(options)
  unless response.body.empty?
    response.body = Fog::JSON.decode(response.body)
  end
  response
end