right_api_client 1.5.5 → 1.5.6

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.rdoc CHANGED
@@ -1,5 +1,9 @@
1
1
  = right_api_client - CHANGELOG.rdoc
2
2
 
3
+ == right_api_client - 1.5.6
4
+ Remove unused constant. Fix license and read me.
5
+ Refs #11682 - allow all methods on resource classes and post them to rightapi.
6
+
3
7
  == right_api_client - 1.5.5
4
8
  Fix crash on audit_entry.detail.show (text and not JSON).
5
9
 
data/LICENSE.txt CHANGED
@@ -1,19 +1,20 @@
1
- Copyright (c) 2010-2011, RightScale.com
1
+ Copyright (c) 2009-2012 RightScale, Inc.
2
2
 
3
- Permission is hereby granted, free of charge, to any person obtaining a copy
4
- of this software and associated documentation files (the "Software"), to deal
5
- in the Software without restriction, including without limitation the rights
6
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- copies of the Software, and to permit persons to whom the Software is
8
- furnished to do so, subject to the following conditions:
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ 'Software'), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
9
10
 
10
- The above copyright notice and this permission notice shall be included in
11
- all copies or substantial portions of the Software.
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
12
13
 
13
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- THE SOFTWARE.
14
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
18
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
19
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
20
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc CHANGED
@@ -194,3 +194,9 @@ Put these special cases in the <tt>RightApi::Helper::RESOURCE_TYPE_SPECIAL_ACTIO
194
194
 
195
195
  === Resources are not linked together
196
196
  - In ResourceDetail, resource_type = Instance, need live_tasks as a method.
197
+
198
+ = Troubleshooting
199
+
200
+ == Wrong ruby version
201
+
202
+ Ruby 1.9 is required. Ruby 1.8 will give undefined results, such as missing attributes.
@@ -8,6 +8,7 @@ require File.expand_path('../helper', __FILE__)
8
8
  require File.expand_path('../resource', __FILE__)
9
9
  require File.expand_path('../resource_detail', __FILE__)
10
10
  require File.expand_path('../resources', __FILE__)
11
+ require File.expand_path('../exceptions', __FILE__)
11
12
 
12
13
  # RightApiClient has the generic get/post/delete/put calls that are used by resources
13
14
  module RightApi
@@ -132,13 +133,15 @@ module RightApi
132
133
  end
133
134
 
134
135
  [type, response.body]
136
+ when 404
137
+ raise Exceptions::UnknownRouteException.new("HTTP Code: #{response.code.to_s}, Response body: #{response.body}")
135
138
  else
136
- raise "Unexpected response #{response.code.to_s}, #{response.body}"
139
+ raise Exceptions::ApiException.new("HTTP Code: #{response.code.to_s}, Response body: #{response.body}")
137
140
  end
138
141
  end
139
- #Session cookie is expired or invalid
140
- rescue RuntimeError => e
142
+ rescue Exceptions::ApiException => e
141
143
  if re_login?(e)
144
+ #Session cookie is expired or invalid
142
145
  @cookies = login()
143
146
  retry
144
147
  else
@@ -183,11 +186,13 @@ module RightApi
183
186
  else
184
187
  response.return!(request, result)
185
188
  end
189
+ when 404
190
+ raise Exceptions::UnknownRouteException.new("HTTP Code: #{response.code.to_s}, Response body: #{response.body}")
186
191
  else
187
- raise "Unexpected response #{response.code.to_s}, #{response.body}"
192
+ raise Exceptions::ApiException.new("HTTP Code: #{response.code.to_s}, Response body: #{response.body}")
188
193
  end
189
194
  end
190
- rescue RuntimeError => e
195
+ rescue Exceptions::ApiException => e
191
196
  if re_login?(e)
192
197
  @cookies = login()
193
198
  retry
@@ -203,11 +208,13 @@ module RightApi
203
208
  @rest_client[path].delete(headers) do |response, request, result|
204
209
  case response.code
205
210
  when 200, 204
211
+ when 404
212
+ raise Exceptions::UnknownRouteException.new("HTTP Code: #{response.code.to_s}, Response body: #{response.body}")
206
213
  else
207
- raise "Unexpected response #{response.code.to_s}, #{response.body}"
214
+ raise Exceptions::ApiException.new("HTTP Code: #{response.code.to_s}, Response body: #{response.body}")
208
215
  end
209
216
  end
210
- rescue RuntimeError => e
217
+ rescue Exceptions::ApiException => e
211
218
  if re_login?(e)
212
219
  @cookies = login()
213
220
  retry
@@ -223,11 +230,13 @@ module RightApi
223
230
  @rest_client[path].put(params, headers) do |response, request, result|
224
231
  case response.code
225
232
  when 204
233
+ when 404
234
+ raise Exceptions::UnknownRouteException.new("HTTP Code: #{response.code.to_s}, Response body: #{response.body}")
226
235
  else
227
- raise "Unexpected response #{response.code.to_s}, #{response.body}"
236
+ raise Exceptions::ApiException.new("HTTP Code: #{response.code.to_s}, Response body: #{response.body}")
228
237
  end
229
238
  end
230
- rescue RuntimeError => e
239
+ rescue Exceptions::ApiException => e
231
240
  if re_login?(e)
232
241
  @cookies = login()
233
242
  retry
@@ -0,0 +1,15 @@
1
+ module RightApi
2
+ module Exceptions
3
+ class ApiException < RuntimeError
4
+ def initialize(message="")
5
+ super("Error: #{message}")
6
+ end
7
+ end
8
+
9
+ class UnknownRouteException < ApiException
10
+ def initialize(message="")
11
+ super("Unknown action or route. #{message}")
12
+ end
13
+ end
14
+ end
15
+ end
@@ -7,17 +7,6 @@ module RightApi::Helper
7
7
  'setting' => 'multi_cloud_image_setting'
8
8
  }
9
9
 
10
- # TODO: add this information to the API instead
11
- # The API does not provide information about the basic actions that can be
12
- # performed on a resource so define them here:
13
- RESOURCE_ACTIONS = {
14
- :create => ['deployments', 'server_arrays', 'servers', 'ssh_keys', 'volumes', 'volume_snapshots', 'volume_attachments', 'backups', 'audit_entries'],
15
- :destroy => ['deployment', 'server_array', 'server', 'ssh_key', 'volume', 'volume_snapshot', 'volume_attachment', 'backup'],
16
- :update => ['deployment', 'instance', 'server_array', 'server', 'backup', 'audit_entries'],
17
- :no_index => ['tags', 'tasks', 'monitoring_metric_data'], # Easier to specify those that don't need an index call
18
- :no_show => ['input', 'session', 'resource_tag'] # Once again, easier to define those that don't have a show call
19
- }
20
-
21
10
  # Some RightApi::Resources have methods that operate on the resource type itself
22
11
  # and not on a particular one (ie: without specifying an id). Place these here:
23
12
  RESOURCE_SPECIAL_ACTIONS = {
@@ -3,6 +3,7 @@ module RightApi
3
3
  # This class dynamically adds methods and properties to instances depending on what type of resource they are.
4
4
  class Resource
5
5
  include Helper
6
+ attr_reader :client, :href
6
7
 
7
8
  # Will create a (or an array of) new Resource object(s)
8
9
  # All parameters are treated as read only
@@ -33,29 +34,32 @@ module RightApi
33
34
  resource_type = INCONSISTENT_RESOURCE_TYPES[resource_type]
34
35
  end
35
36
  # For the inspect function:
37
+ @client = client
36
38
  @resource_type = resource_type
37
39
  @hash = hash
40
+ @href = href
38
41
 
39
42
  # Add destroy method to relevant resources
40
- if Helper::RESOURCE_ACTIONS[:destroy].include?(resource_type)
41
- define_instance_method('destroy') do
42
- client.do_delete(href)
43
- end
43
+ define_instance_method('destroy') do
44
+ client.do_delete(href)
44
45
  end
45
46
 
46
47
  # Add update method to relevant resources
47
- if Helper::RESOURCE_ACTIONS[:update].include?(resource_type)
48
- define_instance_method('update') do |*args|
49
- client.do_put(href, *args)
50
- end
48
+ define_instance_method('update') do |*args|
49
+ client.do_put(href, *args)
51
50
  end
52
51
 
53
52
  # Add show method to relevant resources
54
- if !Helper::RESOURCE_ACTIONS[:no_show].include?(resource_type)
55
- define_instance_method('show') do |*args|
56
- RightApi::ResourceDetail.new(client, *client.do_get(href, *args))
57
- end
53
+ define_instance_method('show') do |*args|
54
+ RightApi::ResourceDetail.new(client, *client.do_get(href, *args))
58
55
  end
59
56
  end
57
+
58
+ #Any other method other than standard actions(show,update,destroy) is simply appended to the href and
59
+ #called with a POST.
60
+ def method_missing(m, *args)
61
+ action_href = href + "/" + m.to_s
62
+ client.do_post(action_href, *args)
63
+ end
60
64
  end
61
65
  end
@@ -91,25 +91,27 @@ module RightApi
91
91
  end
92
92
 
93
93
  # Add destroy method to relevant resources
94
- if Helper::RESOURCE_ACTIONS[:destroy].include?(resource_type)
95
- define_instance_method('destroy') do
96
- client.do_delete(href)
97
- end
94
+ define_instance_method('destroy') do
95
+ client.do_delete(href)
98
96
  end
99
97
 
100
98
  # Add update method to relevant resources
101
- if Helper::RESOURCE_ACTIONS[:update].include?(resource_type)
102
- define_instance_method('update') do |*args|
103
- client.do_put(href, *args)
104
- end
99
+ define_instance_method('update') do |*args|
100
+ client.do_put(href, *args)
105
101
  end
106
102
 
107
103
  # Add show method to relevant resources
108
- if !Helper::RESOURCE_ACTIONS[:no_show].include?(resource_type)
109
- define_instance_method('show') do |*args|
110
- self
111
- end
104
+ define_instance_method('show') do |*args|
105
+ self
112
106
  end
113
107
  end
108
+
109
+ #Any other method other than standard actions(show,update,destroy) is simply appended to the href and
110
+ #called with a POST.
111
+ def method_missing(m, *args)
112
+ #The method href would have been defined while initializing the object
113
+ action_href = href + "/" + m.to_s
114
+ client.do_post(action_href, *args)
115
+ end
114
116
  end
115
117
  end
@@ -6,6 +6,7 @@ module RightApi
6
6
  class Resources
7
7
  include Helper
8
8
 
9
+ attr_reader :client, :path
9
10
  def inspect
10
11
  "#<#{self.class.name} " +
11
12
  "resource_type=\"#{@resource_type}\">"
@@ -15,26 +16,25 @@ module RightApi
15
16
  # Resource_type should always be plural.
16
17
  # All parameters are treated as read only
17
18
  def initialize(client, path, resource_type)
19
+ @client = client
20
+ @path = path
21
+
18
22
  if INCONSISTENT_RESOURCE_TYPES.has_key?(get_singular(resource_type))
19
23
  resource_type = INCONSISTENT_RESOURCE_TYPES[get_singular(resource_type)] + 's'
20
24
  end
21
25
  @resource_type = resource_type
22
26
  # Add create methods for the relevant root RightApi::Resources
23
- if Helper::RESOURCE_ACTIONS[:create].include?(resource_type)
24
- self.define_instance_method('create') do |*args|
25
- client.do_post(path, *args)
26
- end
27
+ self.define_instance_method('create') do |*args|
28
+ client.do_post(path, *args)
27
29
  end
28
30
 
29
31
  # Add in index methods for the relevant root RightApi::Resources
30
- if !Helper::RESOURCE_ACTIONS[:no_index].include?(resource_type)
31
- self.define_instance_method('index') do |*args|
32
- # Session uses .index like a .show (so need to treat it as a special case)
33
- if resource_type == 'session'
34
- ResourceDetail.new(client, *client.do_get(path, *args))
35
- else
36
- RightApi::Resource.process(client, *client.do_get(path, *args))
37
- end
32
+ self.define_instance_method('index') do |*args|
33
+ # Session uses .index like a .show (so need to treat it as a special case)
34
+ if resource_type == 'session'
35
+ ResourceDetail.new(client, *client.do_get(path, *args))
36
+ else
37
+ RightApi::Resource.process(client, *client.do_get(path, *args))
38
38
  end
39
39
  end
40
40
 
@@ -47,5 +47,12 @@ module RightApi
47
47
  end
48
48
  end if Helper::RESOURCE_SPECIAL_ACTIONS[resource_type]
49
49
  end
50
+
51
+ #Any other method other than standard actions(create, index) is simply appended to the path and
52
+ #called with a POST.
53
+ def method_missing(m, *args)
54
+ action_path = path + "/" + m.to_s
55
+ client.do_post(action_path, *args)
56
+ end
50
57
  end
51
58
  end
@@ -2,7 +2,7 @@
2
2
  module RightApi
3
3
  class Client
4
4
  API_VERSION = '1.5'
5
- CLIENT_VERSION = '5'
5
+ CLIENT_VERSION = '6'
6
6
  VERSION = "#{API_VERSION}.#{CLIENT_VERSION}"
7
7
  end
8
8
  end
@@ -1,10 +1,10 @@
1
1
  ruby do
2
- version 'ruby-1.9.2-p290'
3
- rubygems '1.6.2'
2
+ version 'ruby-1.9.3-p125'
3
+ rubygems '1.8.11'
4
4
  gemset 'right_api_client'
5
5
  end
6
6
  bundler do
7
- version '1.0.10'
7
+ version '1.0.21'
8
8
  exclusions 'deployment'
9
9
  bundle_path File.join(ENV["HOME"], '.rightscale_bundle', 'right_api_client')
10
10
  end
@@ -12,11 +12,6 @@ describe RightApi::ResourceDetail do
12
12
  resource.api_methods.sort.collect{|s| s.to_s}.should == ["destroy", "links", "show", "update"]
13
13
  end
14
14
 
15
- it "Should not have destroy/show/update for instances of the ResourceDetail class that do not support them" do
16
- resource = RightApi::ResourceDetail.new(@client, 'session', '/api/session', {})
17
- resource.api_methods.sort.collect{|s| s.to_s}.should == ["links"]
18
- end
19
-
20
15
  it "Should have resource-specific methods for instances of the ResourceDetail class" do
21
16
  resource = RightApi::ResourceDetail.new(@client, 'deployment', '/api/deployments/1',
22
17
  {:attribute1 => 'value1', :attribute2 => 'value2'})
@@ -42,7 +37,7 @@ describe RightApi::ResourceDetail do
42
37
 
43
38
  it "Should have live_tasks for the 'instance' resource" do
44
39
  resource = RightApi::ResourceDetail.new(@client, 'instance', '/api/instances/1', {})
45
- resource.api_methods.sort.collect{|s| s.to_s}.should == ["links", "live_tasks", "show", "update"]
40
+ resource.api_methods.sort.collect{|s| s.to_s}.should == ["destroy", "links", "live_tasks", "show", "update"]
46
41
  flexmock(RightApi::Resource).should_receive(:process).with(@client, 'live_task', '/api/instances/1/live/tasks/1').and_return('ok')
47
42
  resource.live_tasks(:id => '1').should == 'ok'
48
43
  end
@@ -56,4 +51,4 @@ describe RightApi::ResourceDetail do
56
51
  resource.api_methods.collect{|s| s.to_s}.sort.should == ["current_instance", "destroy", "href", "links", "show", "update"]
57
52
  end
58
53
  end
59
- end
54
+ end
@@ -12,9 +12,9 @@ describe RightApi::Resource do
12
12
  resource.api_methods.sort.collect{|s| s.to_s}.should == ["destroy", "show", "update"]
13
13
  end
14
14
 
15
- it "Should not have destroy/show/update for instances of the Resource class that do not support them" do
15
+ it "Should have destroy/show/update for all instances of the Resource class" do
16
16
  resource = RightApi::Resource.process(@client, 'session', '/api/session')
17
- resource.api_methods.sort.should == []
17
+ resource.api_methods.sort.should == [:destroy, :show, :update]
18
18
  end
19
19
 
20
20
  it "Should have an array of ResourceDetail instances for index calls" do
@@ -22,4 +22,4 @@ describe RightApi::Resource do
22
22
  resources.first.class.should == RightApi::ResourceDetail
23
23
  end
24
24
  end
25
- end
25
+ end
@@ -12,9 +12,9 @@ describe RightApi::Resources do
12
12
  resource.api_methods.sort.collect{|s| s.to_s}.should == ["create", "index"]
13
13
  end
14
14
 
15
- it "Should not have index for instances of the Resources class that do not support it" do
15
+ it "Should have index even for instances of the Resources class that do not support it" do
16
16
  resource = RightApi::Resources.new(@client, '/api/tags', 'tags')
17
- resource.api_methods.sort.collect{|s| s.to_s}.should == ["by_resource", "by_tag", "multi_add", "multi_delete"]
17
+ resource.api_methods.sort.collect{|s| s.to_s}.should == ["by_resource", "by_tag", "create", "index", "multi_add", "multi_delete"]
18
18
  end
19
19
 
20
20
  it "Should have resource-specific methods for instances of the Resources class" do
@@ -22,4 +22,4 @@ describe RightApi::Resources do
22
22
  resource.api_methods.sort.collect{|s| s.to_s}.should == ["cleanup", "create", "index"]
23
23
  end
24
24
  end
25
- end
25
+ end
metadata CHANGED
@@ -1,108 +1,103 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: right_api_client
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.5.6
4
5
  prerelease:
5
- version: 1.5.5
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - RightScale, Inc.
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2012-01-20 00:00:00 -08:00
14
- default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
12
+ date: 2012-03-02 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
17
15
  name: json
18
- prerelease: false
19
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70331231890480 !ruby/object:Gem::Requirement
20
17
  none: false
21
- requirements:
22
- - - ">="
23
- - !ruby/object:Gem::Version
24
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
25
22
  type: :runtime
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
28
- name: rest-client
29
23
  prerelease: false
30
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *70331231890480
25
+ - !ruby/object:Gem::Dependency
26
+ name: rest-client
27
+ requirement: &70331231889980 !ruby/object:Gem::Requirement
31
28
  none: false
32
- requirements:
33
- - - "="
34
- - !ruby/object:Gem::Version
29
+ requirements:
30
+ - - =
31
+ - !ruby/object:Gem::Version
35
32
  version: 1.6.7
36
33
  type: :runtime
37
- version_requirements: *id002
38
- - !ruby/object:Gem::Dependency
39
- name: rake
40
34
  prerelease: false
41
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *70331231889980
36
+ - !ruby/object:Gem::Dependency
37
+ name: rake
38
+ requirement: &70331231889480 !ruby/object:Gem::Requirement
42
39
  none: false
43
- requirements:
44
- - - "="
45
- - !ruby/object:Gem::Version
40
+ requirements:
41
+ - - =
42
+ - !ruby/object:Gem::Version
46
43
  version: 0.8.7
47
44
  type: :development
48
- version_requirements: *id003
49
- - !ruby/object:Gem::Dependency
50
- name: rspec
51
45
  prerelease: false
52
- requirement: &id004 !ruby/object:Gem::Requirement
46
+ version_requirements: *70331231889480
47
+ - !ruby/object:Gem::Dependency
48
+ name: rspec
49
+ requirement: &70331231889020 !ruby/object:Gem::Requirement
53
50
  none: false
54
- requirements:
55
- - - "="
56
- - !ruby/object:Gem::Version
51
+ requirements:
52
+ - - =
53
+ - !ruby/object:Gem::Version
57
54
  version: 1.3.0
58
55
  type: :development
59
- version_requirements: *id004
60
- - !ruby/object:Gem::Dependency
61
- name: flexmock
62
56
  prerelease: false
63
- requirement: &id005 !ruby/object:Gem::Requirement
57
+ version_requirements: *70331231889020
58
+ - !ruby/object:Gem::Dependency
59
+ name: flexmock
60
+ requirement: &70331231888560 !ruby/object:Gem::Requirement
64
61
  none: false
65
- requirements:
66
- - - "="
67
- - !ruby/object:Gem::Version
62
+ requirements:
63
+ - - =
64
+ - !ruby/object:Gem::Version
68
65
  version: 0.8.7
69
66
  type: :development
70
- version_requirements: *id005
71
- - !ruby/object:Gem::Dependency
72
- name: simplecov
73
67
  prerelease: false
74
- requirement: &id006 !ruby/object:Gem::Requirement
68
+ version_requirements: *70331231888560
69
+ - !ruby/object:Gem::Dependency
70
+ name: simplecov
71
+ requirement: &70331231888100 !ruby/object:Gem::Requirement
75
72
  none: false
76
- requirements:
77
- - - "="
78
- - !ruby/object:Gem::Version
73
+ requirements:
74
+ - - =
75
+ - !ruby/object:Gem::Version
79
76
  version: 0.4.2
80
77
  type: :development
81
- version_requirements: *id006
82
- - !ruby/object:Gem::Dependency
83
- name: bundler
84
78
  prerelease: false
85
- requirement: &id007 !ruby/object:Gem::Requirement
79
+ version_requirements: *70331231888100
80
+ - !ruby/object:Gem::Dependency
81
+ name: bundler
82
+ requirement: &70331231887720 !ruby/object:Gem::Requirement
86
83
  none: false
87
- requirements:
88
- - - ">="
89
- - !ruby/object:Gem::Version
90
- version: "0"
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
91
88
  type: :development
92
- version_requirements: *id007
93
- description: "\n\
94
- The right_api_client gem simplifies the use of RightScale's MultiCloud API. It provides\n\
95
- a simple object model of the API resources, and handles all of the fine details involved\n\
96
- in making HTTP calls and translating their responses.\n "
97
- email:
89
+ prerelease: false
90
+ version_requirements: *70331231887720
91
+ description: ! "\nThe right_api_client gem simplifies the use of RightScale's MultiCloud
92
+ API. It provides\na simple object model of the API resources, and handles all of
93
+ the fine details involved\nin making HTTP calls and translating their responses.\n
94
+ \ "
95
+ email:
98
96
  - rubygems@rightscale.com
99
97
  executables: []
100
-
101
98
  extensions: []
102
-
103
99
  extra_rdoc_files: []
104
-
105
- files:
100
+ files:
106
101
  - .gitignore
107
102
  - CHANGELOG.rdoc
108
103
  - Gemfile
@@ -112,6 +107,7 @@ files:
112
107
  - config/login.yml.example
113
108
  - lib/right_api_client.rb
114
109
  - lib/right_api_client/client.rb
110
+ - lib/right_api_client/exceptions.rb
115
111
  - lib/right_api_client/helper.rb
116
112
  - lib/right_api_client/resource.rb
117
113
  - lib/right_api_client/resource_detail.rb
@@ -127,35 +123,31 @@ files:
127
123
  - spec/resource_spec.rb
128
124
  - spec/resources_spec.rb
129
125
  - spec/spec_helper.rb
130
- has_rdoc: true
131
126
  homepage: https://github.com/rightscale/right_api_client
132
127
  licenses: []
133
-
134
128
  post_install_message:
135
129
  rdoc_options: []
136
-
137
- require_paths:
130
+ require_paths:
138
131
  - lib
139
- required_ruby_version: !ruby/object:Gem::Requirement
132
+ required_ruby_version: !ruby/object:Gem::Requirement
140
133
  none: false
141
- requirements:
142
- - - ">="
143
- - !ruby/object:Gem::Version
144
- version: "0"
145
- required_rubygems_version: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ! '>='
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ required_rubygems_version: !ruby/object:Gem::Requirement
146
139
  none: false
147
- requirements:
148
- - - ">="
149
- - !ruby/object:Gem::Version
150
- version: "0"
140
+ requirements:
141
+ - - ! '>='
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
151
144
  requirements: []
152
-
153
145
  rubyforge_project:
154
- rubygems_version: 1.6.2
146
+ rubygems_version: 1.8.11
155
147
  signing_key:
156
148
  specification_version: 3
157
149
  summary: RightScale MultiCloud API HTTP Client
158
- test_files:
150
+ test_files:
159
151
  - config/login.yml.example
160
152
  - spec/audit_entries_spec.rb
161
153
  - spec/client_spec.rb