right_api_client 1.5.5 → 1.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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