right_api_client 1.5.15 → 1.5.16

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2af6588a889b4481d483cab397c80441d8604792
4
+ data.tar.gz: 33d1712937a923cadcfbf6a5b92e112b85d273a0
5
+ SHA512:
6
+ metadata.gz: bf2fbd1a63a0a699a1e5a52522088ceb9d31b54eb3bc08a670ab1d89c5ffd4fbcadfc28214284b6ae339c125affb5df05f441e84f5114f9c731bfda5ba090534
7
+ data.tar.gz: 1175def15b5720a226d0097f9a27517216e5fb597a169e15bfc2e41d56869caef16aeafded911017b38704363607b6379a627dddca5fe0df6e6fce77b7ec2789
data/.rspec ADDED
@@ -0,0 +1,4 @@
1
+ --colour
2
+ --format=nested
3
+ --backtrace
4
+ --debugger
@@ -1,5 +1,8 @@
1
1
  # CHANGELOG.md
2
2
 
3
+ ## 1.5.16
4
+ - \#57 Sapphire added optional support for querying a (detailed) resource with params, example: client.resource(href, :view => 'full')
5
+
3
6
  ## 1.5.15
4
7
  - \#50 Ivory 14 02 acu148161 Harden client against spotty networks
5
8
 
data/Gemfile CHANGED
@@ -1,3 +1,8 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gemspec
3
+ gemspec
4
+
5
+ gem 'ruby-debug',
6
+ :platforms => [:ruby_18]
7
+ gem 'debugger',
8
+ :platforms => [:ruby_19, :ruby_20, :ruby_21]
@@ -1,18 +1,29 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- right_api_client (1.5.15)
5
- json
4
+ right_api_client (1.5.16)
5
+ json (~> 1.0)
6
+ mime-types (~> 1.0)
6
7
  rest-client (~> 1.6)
7
8
 
8
9
  GEM
9
10
  remote: https://rubygems.org/
10
11
  specs:
12
+ columnize (0.3.6)
13
+ debugger (1.6.6)
14
+ columnize (>= 0.3.1)
15
+ debugger-linecache (~> 1.2.0)
16
+ debugger-ruby_core_source (~> 1.3.2)
17
+ debugger-linecache (1.2.0)
18
+ debugger-ruby_core_source (1.3.2)
11
19
  diff-lcs (1.1.3)
12
20
  flexmock (0.8.7)
13
21
  json (1.8.1)
22
+ linecache (0.46)
23
+ rbx-require-relative (> 0.0.4)
14
24
  mime-types (1.25.1)
15
25
  rake (0.8.7)
26
+ rbx-require-relative (0.0.9)
16
27
  rest-client (1.6.7)
17
28
  mime-types (>= 1.16)
18
29
  rspec (2.9.0)
@@ -23,6 +34,11 @@ GEM
23
34
  rspec-expectations (2.9.1)
24
35
  diff-lcs (~> 1.1.3)
25
36
  rspec-mocks (2.9.0)
37
+ ruby-debug (0.10.4)
38
+ columnize (>= 0.1)
39
+ ruby-debug-base (~> 0.10.4.0)
40
+ ruby-debug-base (0.10.4)
41
+ linecache (>= 0.3)
26
42
  simplecov (0.4.2)
27
43
  simplecov-html (~> 0.4.4)
28
44
  simplecov-html (0.4.5)
@@ -31,9 +47,11 @@ PLATFORMS
31
47
  ruby
32
48
 
33
49
  DEPENDENCIES
34
- bundler
50
+ bundler (~> 1.0)
51
+ debugger
35
52
  flexmock (= 0.8.7)
36
53
  rake (= 0.8.7)
37
54
  right_api_client!
38
55
  rspec (= 2.9.0)
56
+ ruby-debug
39
57
  simplecov (= 0.4.2)
@@ -1,4 +1,4 @@
1
- Copyright (c) 2009-2012 RightScale, Inc.
1
+ Copyright (c) 2009-2014 RightScale, Inc.
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
@@ -6,7 +6,7 @@
6
6
  # The account number is at the end of the browser address bar.
7
7
  :account_id: my_account_id
8
8
 
9
- # There are four login mechanisms:
9
+ # There are five login mechanisms:
10
10
 
11
11
  # 0. Use the following parameters to login with your email and base64-encoded password:
12
12
  # To encode your plaintext password, use 'base64' command or similar.
@@ -22,9 +22,14 @@
22
22
  # User Data box, you will see RS_API_TOKEN = your_account_id:the_instance_token
23
23
  :instance_token: my_instance_token
24
24
 
25
- # 3. Use the following parameter to login with pre-authenticated cookies:
25
+ # 3. Use the following parameter to send a pre-authenticated cookie with every request:
26
26
  :cookies: my_cookie_string
27
27
 
28
+ # 4. Use the following parameter to send an existing OAuth access token with every request:
29
+ # To learn more about OAuth and how to obtain an access token, see
30
+ # http://support.rightscale.com/12-Guides/03-Rightscale_API/OAuth
31
+ :access_token: my_token_string
32
+
28
33
  # The following are optional parameters:
29
34
  :api_url: (this defaults to https://my.rightscale.com)
30
35
  :api_version: (this defaults to 1.5)
@@ -27,10 +27,10 @@ module RightApi
27
27
  # permitted parameters for initializing
28
28
  AUTH_PARAMS = %w[
29
29
  email password_base64 password account_id api_url api_version
30
- cookies instance_token timeout open_timeout max_attempts enable_retry
30
+ cookies instance_token access_token timeout open_timeout max_attempts enable_retry
31
31
  ]
32
32
 
33
- attr_reader :cookies, :instance_token, :last_request, :timeout, :open_timeout, :max_attempts, :enable_retry
33
+ attr_reader :cookies, :instance_token, :access_token, :last_request, :timeout, :open_timeout, :max_attempts, :enable_retry
34
34
  attr_accessor :account_id, :api_url
35
35
 
36
36
  def initialize(args)
@@ -51,10 +51,15 @@ module RightApi
51
51
  @rest_client = RestClient::Resource.new(@api_url, :open_timeout => @open_timeout, :timeout => @timeout)
52
52
  @last_request = {}
53
53
 
54
- # There are three options for login: credentials, instance token,
55
- # or if the user already has the cookies they can just use those.
54
+ # There are four options for login:
55
+ # - credentials
56
+ # - instance API token
57
+ # - existing user-supplied cookies
58
+ # - existing user-supplied OAuth access token
59
+ #
60
+ # The latter two options are not really login; they imply that the user logged in out of band.
56
61
  # See config/login.yml.example for more info.
57
- login() unless @cookies
62
+ login() unless @cookies || @access_token
58
63
 
59
64
  timestamp_cookies
60
65
 
@@ -104,9 +109,9 @@ module RightApi
104
109
 
105
110
  # Given a path returns a RightApiClient::Resource instance.
106
111
  #
107
- def resource(path)
112
+ def resource(path, params={})
108
113
 
109
- r = Resource.process(self, *do_get(path))
114
+ r = Resource.process(self, *do_get(path, params))
110
115
 
111
116
  r.respond_to?(:show) ? r.show : r
112
117
  end
@@ -175,7 +180,7 @@ module RightApi
175
180
  response = nil
176
181
  attempts = 0
177
182
  begin
178
- response = @rest_client[path].post(params, 'X_API_VERSION' => @api_version) do |response, request, result, &block|
183
+ response = @rest_client[path].post(params, 'X-Api-Version' => @api_version) do |response, request, result, &block|
179
184
  if response.code == 302
180
185
  update_api_url(response)
181
186
  response.follow_redirection(request, result, &block)
@@ -195,7 +200,19 @@ module RightApi
195
200
 
196
201
  # Returns the request headers
197
202
  def headers
198
- {'X_API_VERSION' => @api_version, 'X_ACCOUNT' => @account_id, :cookies => @cookies, :accept => :json}
203
+ h = {
204
+ 'X-Api-Version' => @api_version,
205
+ 'X-Account' => @account_id,
206
+ :accept => :json,
207
+ }
208
+
209
+ if @access_token
210
+ h['Authorization'] = "Bearer #{@access_token}"
211
+ elsif @cookies
212
+ h[:cookies] = @cookies
213
+ end
214
+
215
+ h
199
216
  end
200
217
 
201
218
  def update_last_request(request, response)
@@ -373,6 +390,9 @@ module RightApi
373
390
  end
374
391
 
375
392
  def re_login?(e)
393
+ # cannot successfully re-login with only an access token; we want the
394
+ # expiration error to be raised.
395
+ return false if @access_token
376
396
  e.message.index('403') && e.message =~ %r(.*Session cookie is expired or invalid)
377
397
  end
378
398
 
@@ -3,7 +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
+ attr_reader :client, :href, :resource_type
7
7
 
8
8
  # Will create a (or an array of) new Resource object(s)
9
9
  # All parameters are treated as read only
@@ -77,7 +77,10 @@ module RightApi
77
77
  # future we might like to extract resource_type from child_href
78
78
  # and not hard-code it.
79
79
  if child_href.index('instance')
80
- define_instance_method(k) { RightApi::Resource.process(client, 'instance', child_href, v) }
80
+ define_instance_method(k) do |*args|
81
+ path = add_id_and_params_to_path(child_href, *args)
82
+ RightApi::Resource.process(client, 'instance', path, v)
83
+ end
81
84
  end
82
85
  end
83
86
  end
@@ -6,7 +6,7 @@ module RightApi
6
6
  class Resources
7
7
  include Helper
8
8
 
9
- attr_reader :client, :path
9
+ attr_reader :client, :path, :resource_type
10
10
  def inspect
11
11
  "#<#{self.class.name} " +
12
12
  "resource_type=\"#{@resource_type}\">"
@@ -2,7 +2,7 @@
2
2
  module RightApi
3
3
  class Client
4
4
  API_VERSION = '1.5'
5
- CLIENT_VERSION = '15'
5
+ CLIENT_VERSION = '16'
6
6
  VERSION = "#{API_VERSION}.#{CLIENT_VERSION}"
7
7
  end
8
8
  end
@@ -10,6 +10,7 @@ Gem::Specification.new do |s|
10
10
  s.email = [ 'rubygems@rightscale.com' ]
11
11
  s.homepage = 'https://github.com/rightscale/right_api_client'
12
12
  s.summary = 'RightScale MultiCloud API HTTP Client'
13
+ s.license = 'MIT'
13
14
  s.description = %{
14
15
  The right_api_client gem simplifies the use of RightScale's MultiCloud API.
15
16
  It provides a simple object model of the API resources, and handles all of the
@@ -19,12 +20,13 @@ fine details involved in making HTTP calls and translating their responses.
19
20
  s.test_files = `git ls-files spec config`.split(' ')
20
21
  s.rubygems_version = '1.3.7'
21
22
 
22
- s.add_runtime_dependency 'json'
23
+ s.add_runtime_dependency 'json', '~> 1.0'
24
+ s.add_runtime_dependency 'mime-types', '~> 1.0'
23
25
  s.add_runtime_dependency 'rest-client', '~> 1.6'
24
26
 
25
27
  s.add_development_dependency 'rake', '0.8.7'
26
28
  s.add_development_dependency 'rspec', '2.9.0'
27
29
  s.add_development_dependency 'flexmock', '0.8.7'
28
30
  s.add_development_dependency 'simplecov', '0.4.2'
29
- s.add_development_dependency 'bundler'
31
+ s.add_development_dependency 'bundler', '~> 1.0'
30
32
  end
@@ -3,7 +3,7 @@ ruby do
3
3
  gemset 'right_api_client'
4
4
  end
5
5
  bundler do
6
- version '1.3.5'
6
+ version '1.5.3'
7
7
  exclusions 'deployment'
8
8
  bundle_path File.join(ENV["HOME"], '.rightscale_bundle', 'right_api_client')
9
9
  end
@@ -13,6 +13,9 @@ describe RightApi::Client do
13
13
  puts e.message
14
14
  puts e.backtrace
15
15
  end
16
+
17
+ # Don't bother to run tests if the client didn't initialize
18
+ @client.should_not be_nil
16
19
  end
17
20
 
18
21
  it "logs in" do
@@ -37,6 +40,20 @@ describe RightApi::Client do
37
40
  client1.cookies.should == @client.cookies
38
41
  end
39
42
 
43
+ it "accepts an access_token argument when creating a new client" do
44
+ my_hash = YAML.load_file(File.expand_path(@creds, __FILE__))
45
+ my_hash.delete(:email)
46
+ my_hash.delete(:password)
47
+ my_hash.delete(:cookies)
48
+
49
+ access_token = @client.cookies.detect { |k, _| k =~ /^rs_gbl/ }.last
50
+ access_token.should_not be_nil
51
+ my_hash[:access_token] = access_token
52
+
53
+ client1 = RightApi::Client.new(my_hash)
54
+ client1.access_token.should == access_token
55
+ end
56
+
40
57
  it "timestamps cookies" do
41
58
 
42
59
  @client.cookies.timestamp.should_not == nil
@@ -6,14 +6,14 @@ module MockSpecHelper
6
6
  @rest_client = RestClient::Resource.new(RightApi::Client::DEFAULT_API_URL)
7
7
  flexmock(RestClient::Resource).should_receive(:new).and_return(@rest_client)
8
8
  @session = flexmock(:cookies => {})
9
- @header = {'X_API_VERSION' => @api_version, 'X_ACCOUNT' => @test_account_id, :cookies => {}, :accept => :json}
9
+ @header = {'X-Api-Version' => @api_version, 'X-Account' => @test_account_id, :cookies => {}, :accept => :json}
10
10
  end
11
11
 
12
12
  def given_user_facing_client
13
13
  mock_rest_client
14
14
  flexmock(@rest_client).should_receive(:post).with(
15
15
  {'email' => 'email', 'password' => 'password', 'account_href' => '/api/accounts/1'},
16
- {'X_API_VERSION' => @api_version}, Proc).and_return(@session)
16
+ {'X-Api-Version' => @api_version}, Proc).and_return(@session)
17
17
  flexmock(@rest_client).should_receive(:get).with(@header, Proc).and_return(['', '{}'])
18
18
  @client = RightApi::Client.new(:email => 'email', :password => 'password', :account_id => @test_account_id)
19
19
  end
@@ -22,7 +22,7 @@ module MockSpecHelper
22
22
  mock_rest_client
23
23
  flexmock(@rest_client).should_receive(:post).with(
24
24
  {'instance_token' => 'instance_token', 'account_href' => '/api/accounts/1'},
25
- {'X_API_VERSION' => @api_version}, Proc).and_return(@session)
25
+ {'X-Api-Version' => @api_version}, Proc).and_return(@session)
26
26
  flexmock(@rest_client).should_receive(:get).with(@header, Proc).and_return(['', '{"links": [
27
27
  {
28
28
  "href": "/api/clouds/1/instances/1",
metadata CHANGED
@@ -1,143 +1,139 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: right_api_client
3
- version: !ruby/object:Gem::Version
4
- hash: 29
5
- prerelease:
6
- segments:
7
- - 1
8
- - 5
9
- - 15
10
- version: 1.5.15
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.5.16
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - RightScale, Inc.
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2014-01-30 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- requirement: &id001 !ruby/object:Gem::Requirement
22
- none: false
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- hash: 3
27
- segments:
28
- - 0
29
- version: "0"
30
- type: :runtime
11
+ date: 2014-03-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
31
14
  name: json
32
- version_requirements: *id001
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ type: :runtime
33
21
  prerelease: false
34
- - !ruby/object:Gem::Dependency
35
- requirement: &id002 !ruby/object:Gem::Requirement
36
- none: false
37
- requirements:
38
- - - ~>
39
- - !ruby/object:Gem::Version
40
- hash: 3
41
- segments:
42
- - 1
43
- - 6
44
- version: "1.6"
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: mime-types
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.0'
45
34
  type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.0'
41
+ - !ruby/object:Gem::Dependency
46
42
  name: rest-client
47
- version_requirements: *id002
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.6'
48
+ type: :runtime
48
49
  prerelease: false
49
- - !ruby/object:Gem::Dependency
50
- requirement: &id003 !ruby/object:Gem::Requirement
51
- none: false
52
- requirements:
53
- - - "="
54
- - !ruby/object:Gem::Version
55
- hash: 49
56
- segments:
57
- - 0
58
- - 8
59
- - 7
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.6'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
60
61
  version: 0.8.7
61
62
  type: :development
62
- name: rake
63
- version_requirements: *id003
64
63
  prerelease: false
65
- - !ruby/object:Gem::Dependency
66
- requirement: &id004 !ruby/object:Gem::Requirement
67
- none: false
68
- requirements:
69
- - - "="
70
- - !ruby/object:Gem::Version
71
- hash: 43
72
- segments:
73
- - 2
74
- - 9
75
- - 0
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '='
67
+ - !ruby/object:Gem::Version
68
+ version: 0.8.7
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '='
74
+ - !ruby/object:Gem::Version
76
75
  version: 2.9.0
77
76
  type: :development
78
- name: rspec
79
- version_requirements: *id004
80
77
  prerelease: false
81
- - !ruby/object:Gem::Dependency
82
- requirement: &id005 !ruby/object:Gem::Requirement
83
- none: false
84
- requirements:
85
- - - "="
86
- - !ruby/object:Gem::Version
87
- hash: 49
88
- segments:
89
- - 0
90
- - 8
91
- - 7
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '='
81
+ - !ruby/object:Gem::Version
82
+ version: 2.9.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: flexmock
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '='
88
+ - !ruby/object:Gem::Version
92
89
  version: 0.8.7
93
90
  type: :development
94
- name: flexmock
95
- version_requirements: *id005
96
91
  prerelease: false
97
- - !ruby/object:Gem::Dependency
98
- requirement: &id006 !ruby/object:Gem::Requirement
99
- none: false
100
- requirements:
101
- - - "="
102
- - !ruby/object:Gem::Version
103
- hash: 11
104
- segments:
105
- - 0
106
- - 4
107
- - 2
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '='
95
+ - !ruby/object:Gem::Version
96
+ version: 0.8.7
97
+ - !ruby/object:Gem::Dependency
98
+ name: simplecov
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '='
102
+ - !ruby/object:Gem::Version
108
103
  version: 0.4.2
109
104
  type: :development
110
- name: simplecov
111
- version_requirements: *id006
112
105
  prerelease: false
113
- - !ruby/object:Gem::Dependency
114
- requirement: &id007 !ruby/object:Gem::Requirement
115
- none: false
116
- requirements:
117
- - - ">="
118
- - !ruby/object:Gem::Version
119
- hash: 3
120
- segments:
121
- - 0
122
- version: "0"
123
- type: :development
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '='
109
+ - !ruby/object:Gem::Version
110
+ version: 0.4.2
111
+ - !ruby/object:Gem::Dependency
124
112
  name: bundler
125
- version_requirements: *id007
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '1.0'
118
+ type: :development
126
119
  prerelease: false
127
- description: "\n\
128
- The right_api_client gem simplifies the use of RightScale's MultiCloud API.\n\
129
- It provides a simple object model of the API resources, and handles all of the\n\
130
- fine details involved in making HTTP calls and translating their responses.\n "
131
- email:
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '1.0'
125
+ description: "\nThe right_api_client gem simplifies the use of RightScale's MultiCloud
126
+ API.\nIt provides a simple object model of the API resources, and handles all of
127
+ the\nfine details involved in making HTTP calls and translating their responses.\n
128
+ \ "
129
+ email:
132
130
  - rubygems@rightscale.com
133
131
  executables: []
134
-
135
132
  extensions: []
136
-
137
133
  extra_rdoc_files: []
138
-
139
- files:
140
- - .gitignore
134
+ files:
135
+ - ".gitignore"
136
+ - ".rspec"
141
137
  - CHANGELOG.md
142
138
  - Gemfile
143
139
  - Gemfile.lock
@@ -167,39 +163,30 @@ files:
167
163
  - spec/unit/resource_spec.rb
168
164
  - spec/unit/resources_spec.rb
169
165
  homepage: https://github.com/rightscale/right_api_client
170
- licenses: []
171
-
166
+ licenses:
167
+ - MIT
168
+ metadata: {}
172
169
  post_install_message:
173
170
  rdoc_options: []
174
-
175
- require_paths:
171
+ require_paths:
176
172
  - lib
177
- required_ruby_version: !ruby/object:Gem::Requirement
178
- none: false
179
- requirements:
173
+ required_ruby_version: !ruby/object:Gem::Requirement
174
+ requirements:
180
175
  - - ">="
181
- - !ruby/object:Gem::Version
182
- hash: 3
183
- segments:
184
- - 0
185
- version: "0"
186
- required_rubygems_version: !ruby/object:Gem::Requirement
187
- none: false
188
- requirements:
176
+ - !ruby/object:Gem::Version
177
+ version: '0'
178
+ required_rubygems_version: !ruby/object:Gem::Requirement
179
+ requirements:
189
180
  - - ">="
190
- - !ruby/object:Gem::Version
191
- hash: 3
192
- segments:
193
- - 0
194
- version: "0"
181
+ - !ruby/object:Gem::Version
182
+ version: '0'
195
183
  requirements: []
196
-
197
184
  rubyforge_project:
198
- rubygems_version: 1.8.28
185
+ rubygems_version: 2.2.2
199
186
  signing_key:
200
- specification_version: 3
187
+ specification_version: 4
201
188
  summary: RightScale MultiCloud API HTTP Client
202
- test_files:
189
+ test_files:
203
190
  - config/login.yml.example
204
191
  - spec/functional/audit_entries_spec.rb
205
192
  - spec/functional/client_spec.rb