teamcity-rest-client 0.2.2 → 0.3.0
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/VERSION +1 -1
- data/lib/teamcity-rest-client.rb +19 -14
- data/spec/teamcity-rest-client_spec.rb +21 -17
- data/teamcity-rest-client.gemspec +2 -2
- metadata +11 -11
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.0
|
data/lib/teamcity-rest-client.rb
CHANGED
@@ -98,6 +98,15 @@ module TeamcityRestClient
|
|
98
98
|
end
|
99
99
|
|
100
100
|
class Authentication
|
101
|
+
|
102
|
+
def initialize openuri_options
|
103
|
+
@openuri_options = openuri_options
|
104
|
+
end
|
105
|
+
|
106
|
+
def get path, params = {}
|
107
|
+
open(url(path, params), @openuri_options).read
|
108
|
+
end
|
109
|
+
|
101
110
|
def query_string_for params
|
102
111
|
pairs = []
|
103
112
|
params.each_pair { |k,v| pairs << "#{k}=#{v}" }
|
@@ -106,14 +115,12 @@ module TeamcityRestClient
|
|
106
115
|
end
|
107
116
|
|
108
117
|
class HttpBasicAuthentication < Authentication
|
109
|
-
|
118
|
+
|
119
|
+
def initialize host, port, user, password, openuri_options = {}
|
120
|
+
super({:http_basic_authentication => [user, password]}.merge(openuri_options))
|
110
121
|
@host, @port, @user, @password = host, port, user, password
|
111
122
|
end
|
112
123
|
|
113
|
-
def get path, params = {}
|
114
|
-
open(url(path, params), :http_basic_authentication => [@user, @password]).read
|
115
|
-
end
|
116
|
-
|
117
124
|
def url path, params = {}
|
118
125
|
auth_path = path.start_with?("/httpAuth/") ? path : "/httpAuth#{path}"
|
119
126
|
query_string = !params.empty? ? "?#{query_string_for(params)}" : ""
|
@@ -126,14 +133,12 @@ module TeamcityRestClient
|
|
126
133
|
end
|
127
134
|
|
128
135
|
class Open < Authentication
|
129
|
-
|
136
|
+
|
137
|
+
def initialize host, port, options = {}
|
138
|
+
super(options)
|
130
139
|
@host, @port = host, port
|
131
140
|
end
|
132
141
|
|
133
|
-
def get path, params = {}
|
134
|
-
open(url(path, params)).read
|
135
|
-
end
|
136
|
-
|
137
142
|
def url path, params = {}
|
138
143
|
query_string = !params.empty? ? "?#{query_string_for(params)}" : ""
|
139
144
|
"http://#{@host}:#{@port}#{path}#{query_string}"
|
@@ -160,12 +165,12 @@ class Teamcity
|
|
160
165
|
|
161
166
|
attr_reader :host, :port, :authentication
|
162
167
|
|
163
|
-
def initialize host, port,
|
168
|
+
def initialize host, port, options = {}
|
164
169
|
@host, @port = host, port
|
165
|
-
if user
|
166
|
-
@authentication = TeamcityRestClient::HttpBasicAuthentication.new
|
170
|
+
if options[:user] && options[:password]
|
171
|
+
@authentication = TeamcityRestClient::HttpBasicAuthentication.new(host, port, options[:user], options[:password], options)
|
167
172
|
else
|
168
|
-
@authentication = TeamcityRestClient::Open.new
|
173
|
+
@authentication = TeamcityRestClient::Open.new(host, port, options)
|
169
174
|
end
|
170
175
|
end
|
171
176
|
|
@@ -253,8 +253,9 @@ module TeamcityRestClient
|
|
253
253
|
|
254
254
|
describe HttpBasicAuthentication do
|
255
255
|
before :each do
|
256
|
+
@openuri_options = { :proxy => 'http://proxy:9999' }
|
256
257
|
@host, @port, @user, @password = "auth.example.com", 2233, "john", "wayne"
|
257
|
-
@auth = HttpBasicAuthentication.new @host, @port, @user, @password
|
258
|
+
@auth = HttpBasicAuthentication.new @host, @port, @user, @password, @openuri_options
|
258
259
|
@io = stub(:read => "<xml/>")
|
259
260
|
end
|
260
261
|
|
@@ -273,11 +274,11 @@ module TeamcityRestClient
|
|
273
274
|
end
|
274
275
|
|
275
276
|
describe "get" do
|
276
|
-
it "should call open with http basic auth options" do
|
277
|
+
it "should call open with http basic auth options, and openuri option" do
|
277
278
|
path, options = "/something", {:id => 1}
|
278
279
|
url = "http://localhost:1324"
|
279
280
|
@auth.should_receive(:url).with(path, options).and_return url
|
280
|
-
@auth.should_receive(:open).with(url, :http_basic_authentication=>[@user, @password]).and_return(@io)
|
281
|
+
@auth.should_receive(:open).with(url, {:http_basic_authentication=>[@user, @password], :proxy => 'http://proxy:9999'}).and_return(@io)
|
281
282
|
@auth.get(path, options)
|
282
283
|
end
|
283
284
|
end
|
@@ -286,7 +287,8 @@ module TeamcityRestClient
|
|
286
287
|
describe Open do
|
287
288
|
before :each do
|
288
289
|
@host, @port = "auth.example.com", 2233
|
289
|
-
@
|
290
|
+
@openuri_options = { :proxy => 'http://localhost:1234' }
|
291
|
+
@auth = Open.new @host, @port, @openuri_options
|
290
292
|
@io = stub(:read => "<xml/>")
|
291
293
|
end
|
292
294
|
|
@@ -305,7 +307,7 @@ module TeamcityRestClient
|
|
305
307
|
path, options = "/something", {:id => 1}
|
306
308
|
url = "http://localhost:1324"
|
307
309
|
@auth.should_receive(:url).with(path, options).and_return url
|
308
|
-
@auth.should_receive(:open).with(url).and_return(@io)
|
310
|
+
@auth.should_receive(:open).with(url, @openuri_options).and_return(@io)
|
309
311
|
@auth.get(path, options)
|
310
312
|
end
|
311
313
|
end
|
@@ -364,12 +366,13 @@ describe Teamcity do
|
|
364
366
|
describe "specifying username and password" do
|
365
367
|
before :each do
|
366
368
|
@host, @port, @user, @password = "authtc.example.com", 8877, "bob", "marley"
|
369
|
+
@options = {:user => @user, :password => @password, :proxy => 'dog'}
|
367
370
|
@authentication = mock('authentication')
|
368
|
-
TeamcityRestClient::HttpBasicAuthentication.should_receive(:new).with(@host, @port, @user, @password).and_return(@authentication)
|
369
|
-
@tc = Teamcity.new @host, @port, @
|
371
|
+
TeamcityRestClient::HttpBasicAuthentication.should_receive(:new).with(@host, @port, @user, @password, @options).and_return(@authentication)
|
372
|
+
@tc = Teamcity.new @host, @port, @options
|
370
373
|
end
|
371
374
|
|
372
|
-
it "should create HttpBasicAuthentication" do
|
375
|
+
it "should create HttpBasicAuthentication, passing through the options" do
|
373
376
|
@tc.authentication.should === @authentication
|
374
377
|
end
|
375
378
|
end
|
@@ -377,12 +380,13 @@ describe Teamcity do
|
|
377
380
|
describe "specifying no username and password" do
|
378
381
|
before :each do
|
379
382
|
@host, @port = "authtc.example.com", 8877
|
383
|
+
@options = { :proxy => 'cat' }
|
380
384
|
@authentication = mock('authentication')
|
381
|
-
TeamcityRestClient::Open.should_receive(:new).with(@host, @port).and_return(@authentication)
|
382
|
-
@tc = Teamcity.new @host, @port
|
385
|
+
TeamcityRestClient::Open.should_receive(:new).with(@host, @port, @options).and_return(@authentication)
|
386
|
+
@tc = Teamcity.new @host, @port, @options
|
383
387
|
end
|
384
388
|
|
385
|
-
it "should create
|
389
|
+
it "should create Open authentication" do
|
386
390
|
@tc.authentication.should === @authentication
|
387
391
|
end
|
388
392
|
end
|
@@ -460,7 +464,7 @@ HTML
|
|
460
464
|
XML
|
461
465
|
@authentication.should_receive(:get).with("/app/rest/projects", {}).and_return(xml)
|
462
466
|
TeamcityRestClient::HttpBasicAuthentication.should_receive(:new).and_return(@authentication)
|
463
|
-
@tc = Teamcity.new @host, @port, @user, @password
|
467
|
+
@tc = Teamcity.new @host, @port, { :user => @user, :password => @password }
|
464
468
|
@projects = @tc.projects
|
465
469
|
end
|
466
470
|
|
@@ -496,7 +500,7 @@ XML
|
|
496
500
|
XML
|
497
501
|
@authentication.should_receive(:get).with("/app/rest/buildTypes", {}).and_return(xml)
|
498
502
|
TeamcityRestClient::HttpBasicAuthentication.should_receive(:new).and_return(@authentication)
|
499
|
-
@tc = Teamcity.new @host, @port, @user, @password
|
503
|
+
@tc = Teamcity.new @host, @port, :user => @user, :password => @password
|
500
504
|
@build_types = @tc.build_types
|
501
505
|
end
|
502
506
|
|
@@ -550,7 +554,7 @@ XML
|
|
550
554
|
@options = {:buildType => "id:bt212", :count => 1}
|
551
555
|
@authentication.should_receive(:get).with("/app/rest/builds", @options).and_return(xml)
|
552
556
|
TeamcityRestClient::HttpBasicAuthentication.should_receive(:new).and_return(@authentication)
|
553
|
-
@tc = Teamcity.new @host, @port, @user, @password
|
557
|
+
@tc = Teamcity.new @host, @port, :user => @user, :password => @password
|
554
558
|
@builds = @tc.builds @options
|
555
559
|
end
|
556
560
|
|
@@ -570,7 +574,7 @@ XML
|
|
570
574
|
XML
|
571
575
|
@authentication.should_receive(:get).with("/app/rest/builds", {}).and_return(xml)
|
572
576
|
TeamcityRestClient::HttpBasicAuthentication.should_receive(:new).and_return(@authentication)
|
573
|
-
@tc = Teamcity.new @host, @port, @user, @password
|
577
|
+
@tc = Teamcity.new @host, @port, :user => @user, :password => @password
|
574
578
|
@builds = @tc.builds
|
575
579
|
end
|
576
580
|
|
@@ -604,7 +608,7 @@ XML
|
|
604
608
|
XML
|
605
609
|
@authentication.should_receive(:get).with("/app/rest/builds", {}).and_return(xml)
|
606
610
|
TeamcityRestClient::HttpBasicAuthentication.should_receive(:new).and_return(@authentication)
|
607
|
-
@tc = Teamcity.new @host, @port, @user, @password
|
611
|
+
@tc = Teamcity.new @host, @port, :user => @user, :password => @password
|
608
612
|
@builds = @tc.builds
|
609
613
|
end
|
610
614
|
|
@@ -638,4 +642,4 @@ XML
|
|
638
642
|
end
|
639
643
|
end
|
640
644
|
end
|
641
|
-
end
|
645
|
+
end
|
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "teamcity-rest-client"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.3.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["simon"]
|
12
|
-
s.date = "
|
12
|
+
s.date = "2012-01-20"
|
13
13
|
s.description = "Teamcity rest api client (readonly)"
|
14
14
|
s.email = "simojenki@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: teamcity-rest-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-01-20 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &80597140 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 2.3.0
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *80597140
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bundler
|
27
|
-
requirement: &
|
27
|
+
requirement: &80596870 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.0.0
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *80596870
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: jeweler
|
38
|
-
requirement: &
|
38
|
+
requirement: &80596630 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 1.6.4
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *80596630
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rcov
|
49
|
-
requirement: &
|
49
|
+
requirement: &80596360 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *80596360
|
58
58
|
description: Teamcity rest api client (readonly)
|
59
59
|
email: simojenki@gmail.com
|
60
60
|
executables: []
|
@@ -94,7 +94,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
94
94
|
version: '0'
|
95
95
|
segments:
|
96
96
|
- 0
|
97
|
-
hash:
|
97
|
+
hash: -787692387
|
98
98
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
99
99
|
none: false
|
100
100
|
requirements:
|