cfoundry 0.5.1.rc1 → 0.5.1.rc2
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/lib/cfoundry/errors.rb +14 -2
- data/lib/cfoundry/rest_client.rb +6 -0
- data/lib/cfoundry/version.rb +1 -1
- data/spec/cfoundry/errors_spec.rb +8 -0
- data/spec/cfoundry/rest_client_spec.rb +27 -2
- metadata +144 -155
data/lib/cfoundry/errors.rb
CHANGED
@@ -3,10 +3,10 @@ require "multi_json"
|
|
3
3
|
|
4
4
|
module CFoundry
|
5
5
|
# Base class for CFoundry errors (not from the server).
|
6
|
-
class Error < RuntimeError
|
6
|
+
class Error < RuntimeError
|
7
7
|
end
|
8
8
|
|
9
|
-
class Deprecated < Error
|
9
|
+
class Deprecated < Error
|
10
10
|
end
|
11
11
|
|
12
12
|
class Mismatch < Error
|
@@ -20,6 +20,18 @@ module CFoundry
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
+
class InvalidTarget < Error
|
24
|
+
attr_reader :target
|
25
|
+
|
26
|
+
def initialize(target)
|
27
|
+
@target = target
|
28
|
+
end
|
29
|
+
|
30
|
+
def to_s
|
31
|
+
"Invalid target URI: #{@target}"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
23
35
|
class TargetRefused < Error
|
24
36
|
# Error message.
|
25
37
|
attr_reader :message
|
data/lib/cfoundry/rest_client.rb
CHANGED
@@ -68,6 +68,10 @@ module CFoundry
|
|
68
68
|
def request_uri(method, uri, options = {})
|
69
69
|
uri = URI.parse(uri)
|
70
70
|
|
71
|
+
unless uri.is_a?(URI::HTTP)
|
72
|
+
raise InvalidTarget.new(@target)
|
73
|
+
end
|
74
|
+
|
71
75
|
# keep original options in case there's a redirect to follow
|
72
76
|
original_options = options.dup
|
73
77
|
payload = options[:payload]
|
@@ -148,6 +152,8 @@ module CFoundry
|
|
148
152
|
raise Timeout.new(method, uri, e)
|
149
153
|
rescue SocketError, Errno::ECONNREFUSED => e
|
150
154
|
raise TargetRefused, e.message
|
155
|
+
rescue URI::InvalidURIError
|
156
|
+
raise InvalidTarget.new(@target)
|
151
157
|
end
|
152
158
|
|
153
159
|
def construct_url(path)
|
data/lib/cfoundry/version.rb
CHANGED
@@ -12,6 +12,14 @@ describe 'Errors' do
|
|
12
12
|
its(:parent) { should eq parent }
|
13
13
|
end
|
14
14
|
|
15
|
+
describe CFoundry::InvalidTarget do
|
16
|
+
let(:target) { "http://--foo-bar" }
|
17
|
+
subject { CFoundry::InvalidTarget.new(target) }
|
18
|
+
|
19
|
+
its(:to_s) { should eq "Invalid target URI: #{target}"}
|
20
|
+
its(:target) { should eq target }
|
21
|
+
end
|
22
|
+
|
15
23
|
describe CFoundry::APIError do
|
16
24
|
let(:request) { { :method => "GET", :url => "http://api.cloudfoundry.com/foo", :headers => {} } }
|
17
25
|
let(:response_body) { "NOT FOUND" }
|
@@ -2,11 +2,12 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe CFoundry::RestClient do
|
4
4
|
let(:token) { nil }
|
5
|
-
let(:
|
5
|
+
let(:target) { "https://api.cloudfoundry.com" }
|
6
|
+
let(:rest_client) { CFoundry::RestClient.new(target, token) }
|
6
7
|
|
7
8
|
describe '#request' do
|
8
9
|
let(:path) { "some-path" }
|
9
|
-
let(:url) { "
|
10
|
+
let(:url) { "#{target}/#{path}" }
|
10
11
|
let(:method) { "GET" }
|
11
12
|
let(:options) { {} }
|
12
13
|
|
@@ -142,6 +143,30 @@ describe CFoundry::RestClient do
|
|
142
143
|
end
|
143
144
|
|
144
145
|
describe 'errors' do
|
146
|
+
context "when the target refuses the connection" do
|
147
|
+
let(:target) { "http://localhost:2358974958" }
|
148
|
+
|
149
|
+
it "raises CFoundry::TargetRefused" do
|
150
|
+
stub_request(:get, url).to_raise(Errno::ECONNREFUSED)
|
151
|
+
expect { subject }.to raise_error(CFoundry::TargetRefused)
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
context "when the target is not a HTTP(S) URI" do
|
156
|
+
let(:target) { "ftp://foo-bar.com" }
|
157
|
+
|
158
|
+
it "raises CFoundry::InvalidTarget" do
|
159
|
+
expect { subject }.to raise_error(CFoundry::InvalidTarget)
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
context "when the target URI is invalid" do
|
164
|
+
let(:target) { "@#*#^! rubby" }
|
165
|
+
|
166
|
+
it "raises CFoundry::InvalidTarget" do
|
167
|
+
expect { subject }.to raise_error(CFoundry::InvalidTarget)
|
168
|
+
end
|
169
|
+
end
|
145
170
|
end
|
146
171
|
|
147
172
|
describe "the return value" do
|
metadata
CHANGED
@@ -1,184 +1,184 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: cfoundry
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.5.1.rc2
|
5
5
|
prerelease: 6
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 5
|
9
|
-
- 1
|
10
|
-
- rc
|
11
|
-
- 1
|
12
|
-
version: 0.5.1.rc1
|
13
6
|
platform: ruby
|
14
|
-
authors:
|
7
|
+
authors:
|
15
8
|
- Cloud Foundry Team
|
16
9
|
- Alex Suraci
|
17
10
|
autorequire:
|
18
11
|
bindir: bin
|
19
12
|
cert_chain: []
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
13
|
+
date: 2013-02-20 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: multipart-post
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
25
18
|
none: false
|
26
|
-
requirements:
|
19
|
+
requirements:
|
27
20
|
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
segments:
|
31
|
-
- 1
|
32
|
-
- 1
|
33
|
-
version: "1.1"
|
34
|
-
prerelease: false
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '1.1'
|
35
23
|
type: :runtime
|
36
|
-
|
37
|
-
|
38
|
-
- !ruby/object:Gem::Dependency
|
39
|
-
version_requirements: &id002 !ruby/object:Gem::Requirement
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
26
|
none: false
|
41
|
-
requirements:
|
27
|
+
requirements:
|
42
28
|
- - ~>
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
|
45
|
-
|
46
|
-
- 1
|
47
|
-
- 3
|
48
|
-
version: "1.3"
|
49
|
-
prerelease: false
|
50
|
-
type: :runtime
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '1.1'
|
31
|
+
- !ruby/object:Gem::Dependency
|
51
32
|
name: multi_json
|
52
|
-
requirement:
|
53
|
-
- !ruby/object:Gem::Dependency
|
54
|
-
version_requirements: &id003 !ruby/object:Gem::Requirement
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
55
34
|
none: false
|
56
|
-
requirements:
|
35
|
+
requirements:
|
57
36
|
- - ~>
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
|
60
|
-
segments:
|
61
|
-
- 0
|
62
|
-
- 9
|
63
|
-
version: "0.9"
|
64
|
-
prerelease: false
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '1.3'
|
65
39
|
type: :runtime
|
40
|
+
prerelease: false
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ~>
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '1.3'
|
47
|
+
- !ruby/object:Gem::Dependency
|
66
48
|
name: rubyzip
|
67
|
-
requirement:
|
68
|
-
- !ruby/object:Gem::Dependency
|
69
|
-
version_requirements: &id004 !ruby/object:Gem::Requirement
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
70
50
|
none: false
|
71
|
-
requirements:
|
51
|
+
requirements:
|
72
52
|
- - ~>
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
|
75
|
-
segments:
|
76
|
-
- 1
|
77
|
-
- 3
|
78
|
-
- 3
|
79
|
-
version: 1.3.3
|
80
|
-
prerelease: false
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.9'
|
81
55
|
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ~>
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0.9'
|
63
|
+
- !ruby/object:Gem::Dependency
|
82
64
|
name: cf-uaa-lib
|
83
|
-
requirement:
|
84
|
-
- !ruby/object:Gem::Dependency
|
85
|
-
version_requirements: &id005 !ruby/object:Gem::Requirement
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
86
66
|
none: false
|
87
|
-
requirements:
|
67
|
+
requirements:
|
88
68
|
- - ~>
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
|
91
|
-
|
92
|
-
- 0
|
93
|
-
- 9
|
94
|
-
version: "0.9"
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: 1.3.3
|
71
|
+
type: :runtime
|
95
72
|
prerelease: false
|
96
|
-
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ~>
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: 1.3.3
|
79
|
+
- !ruby/object:Gem::Dependency
|
97
80
|
name: rake
|
98
|
-
requirement:
|
99
|
-
- !ruby/object:Gem::Dependency
|
100
|
-
version_requirements: &id006 !ruby/object:Gem::Requirement
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
101
82
|
none: false
|
102
|
-
requirements:
|
83
|
+
requirements:
|
103
84
|
- - ~>
|
104
|
-
- !ruby/object:Gem::Version
|
105
|
-
|
106
|
-
segments:
|
107
|
-
- 2
|
108
|
-
- 11
|
109
|
-
version: "2.11"
|
110
|
-
prerelease: false
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0.9'
|
111
87
|
type: :development
|
88
|
+
prerelease: false
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ~>
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0.9'
|
95
|
+
- !ruby/object:Gem::Dependency
|
112
96
|
name: rspec
|
113
|
-
requirement:
|
114
|
-
- !ruby/object:Gem::Dependency
|
115
|
-
version_requirements: &id007 !ruby/object:Gem::Requirement
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
116
98
|
none: false
|
117
|
-
requirements:
|
99
|
+
requirements:
|
118
100
|
- - ~>
|
119
|
-
- !ruby/object:Gem::Version
|
120
|
-
|
121
|
-
segments:
|
122
|
-
- 1
|
123
|
-
- 9
|
124
|
-
version: "1.9"
|
125
|
-
prerelease: false
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '2.11'
|
126
103
|
type: :development
|
104
|
+
prerelease: false
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ~>
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '2.11'
|
111
|
+
- !ruby/object:Gem::Dependency
|
127
112
|
name: webmock
|
128
|
-
requirement:
|
129
|
-
- !ruby/object:Gem::Dependency
|
130
|
-
version_requirements: &id008 !ruby/object:Gem::Requirement
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
131
114
|
none: false
|
132
|
-
requirements:
|
115
|
+
requirements:
|
133
116
|
- - ~>
|
134
|
-
- !ruby/object:Gem::Version
|
135
|
-
|
136
|
-
segments:
|
137
|
-
- 1
|
138
|
-
- 0
|
139
|
-
version: "1.0"
|
140
|
-
prerelease: false
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '1.9'
|
141
119
|
type: :development
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
none: false
|
123
|
+
requirements:
|
124
|
+
- - ~>
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: '1.9'
|
127
|
+
- !ruby/object:Gem::Dependency
|
142
128
|
name: rr
|
143
|
-
requirement:
|
144
|
-
- !ruby/object:Gem::Dependency
|
145
|
-
version_requirements: &id009 !ruby/object:Gem::Requirement
|
129
|
+
requirement: !ruby/object:Gem::Requirement
|
146
130
|
none: false
|
147
|
-
requirements:
|
148
|
-
- -
|
149
|
-
- !ruby/object:Gem::Version
|
150
|
-
|
151
|
-
segments:
|
152
|
-
- 0
|
153
|
-
version: "0"
|
154
|
-
prerelease: false
|
131
|
+
requirements:
|
132
|
+
- - ~>
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: '1.0'
|
155
135
|
type: :development
|
136
|
+
prerelease: false
|
137
|
+
version_requirements: !ruby/object:Gem::Requirement
|
138
|
+
none: false
|
139
|
+
requirements:
|
140
|
+
- - ~>
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '1.0'
|
143
|
+
- !ruby/object:Gem::Dependency
|
156
144
|
name: gem-release
|
157
|
-
requirement:
|
158
|
-
- !ruby/object:Gem::Dependency
|
159
|
-
version_requirements: &id010 !ruby/object:Gem::Requirement
|
145
|
+
requirement: !ruby/object:Gem::Requirement
|
160
146
|
none: false
|
161
|
-
requirements:
|
162
|
-
- -
|
163
|
-
- !ruby/object:Gem::Version
|
164
|
-
|
165
|
-
segments:
|
166
|
-
- 0
|
167
|
-
version: "0"
|
168
|
-
prerelease: false
|
147
|
+
requirements:
|
148
|
+
- - ! '>='
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: '0'
|
169
151
|
type: :development
|
152
|
+
prerelease: false
|
153
|
+
version_requirements: !ruby/object:Gem::Requirement
|
154
|
+
none: false
|
155
|
+
requirements:
|
156
|
+
- - ! '>='
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0'
|
159
|
+
- !ruby/object:Gem::Dependency
|
170
160
|
name: timecop
|
171
|
-
requirement:
|
161
|
+
requirement: !ruby/object:Gem::Requirement
|
162
|
+
none: false
|
163
|
+
requirements:
|
164
|
+
- - ! '>='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
type: :development
|
168
|
+
prerelease: false
|
169
|
+
version_requirements: !ruby/object:Gem::Requirement
|
170
|
+
none: false
|
171
|
+
requirements:
|
172
|
+
- - ! '>='
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: '0'
|
172
175
|
description:
|
173
|
-
email:
|
176
|
+
email:
|
174
177
|
- vcap-dev@googlegroups.com
|
175
178
|
executables: []
|
176
|
-
|
177
179
|
extensions: []
|
178
|
-
|
179
180
|
extra_rdoc_files: []
|
180
|
-
|
181
|
-
files:
|
181
|
+
files:
|
182
182
|
- LICENSE
|
183
183
|
- Rakefile
|
184
184
|
- lib/cfoundry/auth_token.rb
|
@@ -269,40 +269,29 @@ files:
|
|
269
269
|
- spec/support/v1_fake_helper.rb
|
270
270
|
homepage: http://github.com/cloudfoundry/vmc-lib
|
271
271
|
licenses: []
|
272
|
-
|
273
272
|
post_install_message:
|
274
273
|
rdoc_options: []
|
275
|
-
|
276
|
-
require_paths:
|
274
|
+
require_paths:
|
277
275
|
- lib
|
278
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
276
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
279
277
|
none: false
|
280
|
-
requirements:
|
281
|
-
- -
|
282
|
-
- !ruby/object:Gem::Version
|
283
|
-
|
284
|
-
|
285
|
-
- 0
|
286
|
-
version: "0"
|
287
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
278
|
+
requirements:
|
279
|
+
- - ! '>='
|
280
|
+
- !ruby/object:Gem::Version
|
281
|
+
version: '0'
|
282
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
288
283
|
none: false
|
289
|
-
requirements:
|
290
|
-
- -
|
291
|
-
- !ruby/object:Gem::Version
|
292
|
-
hash: 25
|
293
|
-
segments:
|
294
|
-
- 1
|
295
|
-
- 3
|
296
|
-
- 1
|
284
|
+
requirements:
|
285
|
+
- - ! '>'
|
286
|
+
- !ruby/object:Gem::Version
|
297
287
|
version: 1.3.1
|
298
288
|
requirements: []
|
299
|
-
|
300
289
|
rubyforge_project: cfoundry
|
301
|
-
rubygems_version: 1.8.
|
290
|
+
rubygems_version: 1.8.23
|
302
291
|
signing_key:
|
303
292
|
specification_version: 3
|
304
293
|
summary: High-level library for working with the Cloud Foundry API.
|
305
|
-
test_files:
|
294
|
+
test_files:
|
306
295
|
- spec/cfoundry/auth_token_spec.rb
|
307
296
|
- spec/cfoundry/baseclient_spec.rb
|
308
297
|
- spec/cfoundry/client_spec.rb
|