Class: RightScaleSelfService::Api::Service

Inherits:
Object
  • Object
show all
Defined in:
lib/rightscale_selfservice/api/service.rb

Overview

A base class for behavior shared with all SS API Services. Today they are (designer,catalog,manager)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, version, base_url, client) ⇒ Service

Returns a new instance of Service.



35
36
37
38
39
40
41
# File 'lib/rightscale_selfservice/api/service.rb', line 35

def initialize(name, version, base_url, client)
  @resources = {}
  @name = name
  @version = version
  @base_url = base_url
  @client = client
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *arguments) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/rightscale_selfservice/api/service.rb', line 43

def method_missing(name, *arguments)
  unless client.interface["services"][@name][@version].has_key?(name.to_s)
    raise "No resource named \"#{name}\" was found in version \"#{@version}\" of service \"#{@name}\". Available resources are [#{client.interface["services"][@name][@version].keys.join(',')}]"
  end

  if @resources.has_key?(name.to_s)
    @resources[name.to_s]
  else
    resource = RightScaleSelfService::Api::Resource.new(name.to_s, self)
    @resources[name.to_s] = resource
  end
end

Instance Attribute Details

#base_urlObject

Returns the value of attribute base_url.



33
34
35
# File 'lib/rightscale_selfservice/api/service.rb', line 33

def base_url
  @base_url
end

#clientObject

Returns the value of attribute client.



29
30
31
# File 'lib/rightscale_selfservice/api/service.rb', line 29

def client
  @client
end

#nameObject

Returns the value of attribute name.



27
28
29
# File 'lib/rightscale_selfservice/api/service.rb', line 27

def name
  @name
end

#versionObject

Returns the value of attribute version.



31
32
33
# File 'lib/rightscale_selfservice/api/service.rb', line 31

def version
  @version
end