jenkins_api_client 1.4.3 → 1.4.4
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/Gemfile +2 -1
- data/jenkins_api_client.gemspec +9 -6
- data/lib/jenkins_api_client/user.rb +11 -1
- data/lib/jenkins_api_client/version.rb +1 -1
- data/scripts/login_with_pry.rb +3 -3
- data/spec/unit_tests/user_spec.rb +17 -0
- metadata +30 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 945fb4dab2fb3402f9e696d7745a0c92d103ce24
|
4
|
+
data.tar.gz: dc9f51f9e56f52282f64fa9129640e2912d9eeab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3984eae2ddd8d37bacb9ce7f0d8b63ace787331f7c787ced740b3c09554998e300d586544b0ee4557a080de07ef150646f4539d1abb06296604ffadaf96dc960
|
7
|
+
data.tar.gz: 963b9bce2dfe6a5e2b513ca37c5dfe3421e08a91bd86ffbb26f8c914ba3ff8887155a6d61d631fc7e487b462ec35fe93008c2ca058c8ec6a31e260f97e60bd38
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,10 @@ CHANGELOG
|
|
4
4
|
upcoming
|
5
5
|
--------
|
6
6
|
|
7
|
+
v1.4.4 [09-SEP-2016]
|
8
|
+
----------------------
|
9
|
+
* [#213][] Add support for getting a user's API token.
|
10
|
+
|
7
11
|
v1.4.3 [07-JUN-2016]
|
8
12
|
----------------------
|
9
13
|
* [#207][] Add support for SOCKS proxies. Credit: [@dylanmckay][]
|
@@ -341,6 +345,7 @@ v0.0.1 [15-OCT-2012]
|
|
341
345
|
[#188]: https://github.com/arangamani/jenkins_api_client/issues/188
|
342
346
|
[#191]: https://github.com/arangamani/jenkins_api_client/issues/191
|
343
347
|
[#207]: https://github.com/arangamani/jenkins_api_client/issues/207
|
348
|
+
[#213]: https://github.com/arangamani/jenkins_api_client/issues/213
|
344
349
|
[@AndrewHanes]: https://github.com/AndrewHanes
|
345
350
|
[@Loa]: https://github.com/Loa
|
346
351
|
[@Niarfe]: https://github.com/Niarfe
|
data/Gemfile
CHANGED
@@ -2,10 +2,11 @@ source "https://rubygems.org"
|
|
2
2
|
|
3
3
|
gem "nokogiri", "~> 1.6.0"
|
4
4
|
gem "thor", ">= 0.16.0"
|
5
|
-
gem "json", ">= 0"
|
6
5
|
gem "terminal-table", ">= 1.4.0"
|
7
6
|
gem "mixlib-shellout", ">= 1.1.0"
|
8
7
|
gem 'socksify', ">= 1.7.0"
|
8
|
+
gem 'rack', '~> 1.0'
|
9
|
+
gem 'json', '~> 1.0'
|
9
10
|
|
10
11
|
group :development do
|
11
12
|
gem "bundler", ">= 1.0"
|
data/jenkins_api_client.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: jenkins_api_client 1.4.
|
5
|
+
# stub: jenkins_api_client 1.4.4 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "jenkins_api_client"
|
9
|
-
s.version = "1.4.
|
9
|
+
s.version = "1.4.4"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib"]
|
13
13
|
s.authors = ["Kannan Manickam"]
|
14
|
-
s.date = "2016-
|
14
|
+
s.date = "2016-09-10"
|
15
15
|
s.description = "\nThis is a simple and easy-to-use Jenkins Api client with features focused on\nautomating Job configuration programaticaly and so forth"
|
16
16
|
s.email = ["arangamani.kannan@gmail.com"]
|
17
17
|
s.executables = ["jenkinscli"]
|
@@ -99,10 +99,11 @@ Gem::Specification.new do |s|
|
|
99
99
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
100
100
|
s.add_runtime_dependency(%q<nokogiri>, ["~> 1.6.0"])
|
101
101
|
s.add_runtime_dependency(%q<thor>, [">= 0.16.0"])
|
102
|
-
s.add_runtime_dependency(%q<json>, [">= 0"])
|
103
102
|
s.add_runtime_dependency(%q<terminal-table>, [">= 1.4.0"])
|
104
103
|
s.add_runtime_dependency(%q<mixlib-shellout>, [">= 1.1.0"])
|
105
104
|
s.add_runtime_dependency(%q<socksify>, [">= 1.7.0"])
|
105
|
+
s.add_runtime_dependency(%q<rack>, ["~> 1.0"])
|
106
|
+
s.add_runtime_dependency(%q<json>, ["~> 1.0"])
|
106
107
|
s.add_development_dependency(%q<bundler>, [">= 1.0"])
|
107
108
|
s.add_development_dependency(%q<jeweler>, [">= 1.6.4"])
|
108
109
|
s.add_development_dependency(%q<rspec>, ["~> 2.14.1"])
|
@@ -113,10 +114,11 @@ Gem::Specification.new do |s|
|
|
113
114
|
else
|
114
115
|
s.add_dependency(%q<nokogiri>, ["~> 1.6.0"])
|
115
116
|
s.add_dependency(%q<thor>, [">= 0.16.0"])
|
116
|
-
s.add_dependency(%q<json>, [">= 0"])
|
117
117
|
s.add_dependency(%q<terminal-table>, [">= 1.4.0"])
|
118
118
|
s.add_dependency(%q<mixlib-shellout>, [">= 1.1.0"])
|
119
119
|
s.add_dependency(%q<socksify>, [">= 1.7.0"])
|
120
|
+
s.add_dependency(%q<rack>, ["~> 1.0"])
|
121
|
+
s.add_dependency(%q<json>, ["~> 1.0"])
|
120
122
|
s.add_dependency(%q<bundler>, [">= 1.0"])
|
121
123
|
s.add_dependency(%q<jeweler>, [">= 1.6.4"])
|
122
124
|
s.add_dependency(%q<rspec>, ["~> 2.14.1"])
|
@@ -128,10 +130,11 @@ Gem::Specification.new do |s|
|
|
128
130
|
else
|
129
131
|
s.add_dependency(%q<nokogiri>, ["~> 1.6.0"])
|
130
132
|
s.add_dependency(%q<thor>, [">= 0.16.0"])
|
131
|
-
s.add_dependency(%q<json>, [">= 0"])
|
132
133
|
s.add_dependency(%q<terminal-table>, [">= 1.4.0"])
|
133
134
|
s.add_dependency(%q<mixlib-shellout>, [">= 1.1.0"])
|
134
135
|
s.add_dependency(%q<socksify>, [">= 1.7.0"])
|
136
|
+
s.add_dependency(%q<rack>, ["~> 1.0"])
|
137
|
+
s.add_dependency(%q<json>, ["~> 1.0"])
|
135
138
|
s.add_dependency(%q<bundler>, [">= 1.0"])
|
136
139
|
s.add_dependency(%q<jeweler>, [">= 1.6.4"])
|
137
140
|
s.add_dependency(%q<rspec>, ["~> 2.14.1"])
|
@@ -113,7 +113,17 @@ module JenkinsApi
|
|
113
113
|
# }
|
114
114
|
#
|
115
115
|
def get(user_id)
|
116
|
-
|
116
|
+
@client.api_get_request("/user/#{path_encode user_id}")
|
117
|
+
end
|
118
|
+
|
119
|
+
def get_api_token(user_id)
|
120
|
+
response = @client.api_get_request("/user/#{path_encode user_id}/configure", nil, '')
|
121
|
+
html = Nokogiri::HTML(response)
|
122
|
+
attr = html.xpath('//input[@id="apiToken"]/@value').first
|
123
|
+
if attr.nil?
|
124
|
+
raise Exceptions::ApiException.new(@logger, "Failed to get api token")
|
125
|
+
end
|
126
|
+
attr.value
|
117
127
|
end
|
118
128
|
|
119
129
|
end
|
data/scripts/login_with_pry.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
#!/usr/bin/env
|
1
|
+
#!/usr/bin/env ruby
|
2
2
|
# This script provides an easier way to login to Jenkins server API.
|
3
3
|
# It logs you in with the credentials and server details you proided and then
|
4
4
|
# starts an IRB session so you can interactively play with the API.
|
@@ -18,7 +18,7 @@ end
|
|
18
18
|
|
19
19
|
def get_from_stdin(prompt, mask = false)
|
20
20
|
$stdout.write(prompt)
|
21
|
-
|
21
|
+
|
22
22
|
begin
|
23
23
|
Kernel::system "stty -echo" if mask == true
|
24
24
|
ret = gets.chomp!
|
@@ -46,7 +46,7 @@ begin
|
|
46
46
|
unless client_opts.has_key?(:password) or client_opts.has_key?(:password_base64)
|
47
47
|
client_opts[:password] = prompt_for_password()
|
48
48
|
end
|
49
|
-
|
49
|
+
|
50
50
|
@client = JenkinsApi::Client.new(client_opts)
|
51
51
|
puts "logged-in to the Jenkins API, use the '@client' variable to use the client"
|
52
52
|
end
|
@@ -2,6 +2,16 @@ require File.expand_path('../spec_helper', __FILE__)
|
|
2
2
|
|
3
3
|
describe JenkinsApi::Client::User do
|
4
4
|
context "With properly initialized Client" do
|
5
|
+
ADMIN_CONFIGURE_TEXT = <<__ADMIN_CONFIGURE
|
6
|
+
<!DOCTYPE html><html><head resURL="/static/70901acb" data-rooturl="" data-resurl="/static/70901acb">
|
7
|
+
<title>User ‘admin’ Configuration [Jenkins]</title>
|
8
|
+
<link rel="stylesheet" href="/static/70901acb/css/layout-common.css" type="text/css" />
|
9
|
+
<link rel="stylesheet" href="/static/70901acb/css/style.css" type="text/css" />
|
10
|
+
<input name="_.fullName" type="text" class="setting-input " value="admin" />/td></tr><tr><td class="setting-leftspace"> </td><td class="setting-name">Description</td><td class="setting-main"><textarea name="_.description" rows="5" class="setting-input "></textarea><div class="textarea-handle"></div></td><td class="setting-help"><a helpURL="/help/user/description.html" href="#" class="help-button"><img src="/static/70901acb/images/16x16/help.png" alt="Help for feature: Description" style="width: 16px; height: 16px; " class="icon-help icon-sm" /></a></td></tr><tr class="validation-error-area"><td colspan="2"></td><td></td><td></td></tr><tr class="help-area"><td></td><td colspan="2"><div class="help">Loading...</div></td><td></td></tr><link rel='stylesheet' href='/adjuncts/70901acb/lib/form/section_.css' type='text/css' /><script src='/adjuncts/70901acb/lib/form/section_.js' type='text/javascript'></script><tr name="userProperty0" style="display:none" class="row-set-start row-group-start"></tr><tr class="row-set-end row-group-end"></tr><tr><td colspan="4"><div class="section-header">API Token</div></td></tr><tr name="userProperty1" style="display:none" class="row-set-start row-group-start"></tr><tr><td></td><td></td><td><script src='/adjuncts/70901acb/lib/form/advanced/advanced.js' type='text/javascript'></script><div style="text-align:left" class="advancedLink"><span style="display: none" id="id245"><img src="/static/70901acb/images/24x24/notepad.png" tooltip="One or more fields in this block have been edited." style="width: 24px; height: 24px; vertical-align: baseline" class="icon-notepad icon-md" /></span> <input type="button" value="Show API Token..." class="advanced-button advancedButton" /></div><table class="advancedBody"><tbody><tr><td class="setting-leftspace"> </td><td class="setting-name">User ID</td><td class="setting-main"><input readonly="readonly" name="_." type="text" class="setting-input " value="admin" /></td><td class="setting-no-help"></td></tr><tr class="validation-error-area"><td colspan="2"></td><td></td><td></td></tr><tr><td class="setting-leftspace"> </td><td class="setting-name">API Token</td><td class="setting-main"><input readonly="readonly" name="_.apiToken" id="apiToken" type="text" class="setting-input " value="12345678" /></td><td class="setting-help"><a helpURL="/descriptor/jenkins.security.ApiTokenProperty/help/apiToken" href="#" class="help-button"><img src="/static/70901acb/images/16x16/help.png" alt="Help for feature: API Token" style="width: 16px; height: 16px; " class="icon-help icon-sm" /></a></td></tr><tr class="validation-error-area"><td colspan="2"></td><td></td><td></td></tr><tr class="help-area"><td></td><td colspan="2"><div class="help">Loading...</div></td><td></td></tr><tr><td class="setting-leftspace"> </td><td class="setting-name"></td><td class="setting-main"><div style="float:right"><input onclick="validateButton('/user/admin/descriptorByName/jenkins.security.ApiTokenProperty/changeToken','',this)" type="button" value="Change API Token" class="yui-button validate-button" /></div><div style="display:none;"><img src="/static/70901acb/images/spinner.gif" />
|
11
|
+
<input name="email.address" type="text" class="setting-input " value="" /></td><td class="setting-no-help"></td></tr><tr class="validation-error-area"><td colspan="2"></td><td></td><td></td></tr><tr><td colspan="2"></td><td class="setting-description">Your e-mail address, like <tt>joe.chin@sun.com</tt></td><td></td></tr><tr class="row-set-end row-group-end"></tr><tr><td colspan="4"><div class="section-header">My Views</div></td></tr><tr name="userProperty4" style="display:none" class="row-set-start row-group-start"></tr><tr><td class="setting-leftspace"> </td><td class="setting-name">Default View</td><td class="setting-main">
|
12
|
+
<input checkUrl="'/user/admin/my-views/viewExistsCheck?value='+encodeURIComponent(this.value)+'&exists=true'" name="_.primaryViewName" type="text" class="setting-input validated " value="" /></td><td class="setting-no-help"></td></tr><tr class="validation-error-area"><td colspan="2"></td><td></td><td></td></tr><tr><td colspan="2"></td><td class="setting-description">The view selected by default when navigating to the users private views</td><td></td></tr><tr class="row-set-end row-group-end"></tr><tr><td colspan="4"><div class="section-header">SSH Public Keys</div></td></tr><tr name="userProperty7" style="display:none" class="row-set-start row-group-start"></tr><tr><td class="setting-leftspace"> </td><td class="setting-name">SSH Public Keys</td><td class="setting-main"><textarea name="_.authorizedKeys" rows="5" class="setting-input "></textarea><div class="textarea-handle"></div></td><td class="setting-help"><a helpURL="/descriptor/org.jenkinsci.main.modules.cli.auth.ssh.UserPropertyImpl/help/authorizedKeys" href="#" class="help-button"><img src="/static/70901acb/images/16x16/help.png" alt="Help for feature: SSH Public Keys" style="width: 16px; height: 16px; " class="icon-help icon-sm" /></a></td></tr><tr class="validation-error-area"><td colspan="2"></td><td></td><td></td></tr><tr class="help-area"><td></td><td colspan="2"><div class="help">Loading...</div></td><td></td></tr><tr class="row-set-end row-group-end"></tr><tr><td colspan="4"><div class="section-header">Setting for search</div></td></tr><tr name="userProperty8" style="display:none" class="row-set-start row-group-start"></tr><tr><td class="setting-leftspace"> </td><td class="setting-name">Case-sensitivity</td><td class="setting-main"><input name="insensitiveSearch" type="checkbox" class=" " /><label class="attach-previous">Insensitive search tool</label></td><td class="setting-no-help"></td></tr><tr class="validation-error-area"><td colspan="2"></td><td></td><td></td></tr><tr class="row-set-end row-group-end"></tr><tr><td colspan="4"><div id="bottom-sticker"><div class="bottom-sticker-inner"><input name="Submit" type="submit" value="Save" class="submit-button primary" /><script src='/adjuncts/70901acb/lib/form/apply/apply.js' type='text/javascript'></script><input type="hidden" name="core:apply" value="" /><input name="Apply" type="button" value="Apply" class="apply-button applyButton" /></div></div></td></tr></table></form><script src='/adjuncts/70901acb/lib/form/confirm.js' type='text/javascript'></script></div></div><footer><div class="container-fluid"><div class="row"><div class="col-md-6" id="footer"></div><div class="col-md-18"><span class="page_generated">Page generated: Sep 10, 2016 12:54:41 AM UTC</span><span class="rest_api"><a href="api/">REST API</a></span><span class="jenkins_ver"><a href="http://jenkins-ci.org/">Jenkins ver. 2.7.4</a></span></div></div></div></footer></body></html>
|
13
|
+
__ADMIN_CONFIGURE
|
14
|
+
|
5
15
|
FRED_TXT = <<__FRED
|
6
16
|
{
|
7
17
|
"absoluteUrl" : "https://myjenkins.example.com/jenkins/user/fred",
|
@@ -88,6 +98,7 @@ __USERLIST
|
|
88
98
|
@client.stub(:api_get_request).with('/user/Fred%20Flintstone').and_return(FRED_JSON)
|
89
99
|
@client.stub(:api_get_request).with('/user/fred').and_return(FRED_JSON)
|
90
100
|
@client.stub(:api_get_request).with('/user/wilma').and_return(WILMA_JSON)
|
101
|
+
@client.stub(:api_get_request).with('/user/admin/configure', nil, '').and_return(ADMIN_CONFIGURE_TEXT)
|
91
102
|
@user = JenkinsApi::Client::User.new(@client)
|
92
103
|
end
|
93
104
|
|
@@ -121,6 +132,12 @@ __USERLIST
|
|
121
132
|
end
|
122
133
|
end
|
123
134
|
|
135
|
+
describe "#get_api_token" do
|
136
|
+
it "returns the user's API token" do
|
137
|
+
@user.get_api_token('admin').should eq('12345678')
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
124
141
|
end
|
125
142
|
end
|
126
143
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jenkins_api_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kannan Manickam
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-09-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -38,20 +38,6 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 0.16.0
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: json
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: terminal-table
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,6 +80,34 @@ dependencies:
|
|
94
80
|
- - ">="
|
95
81
|
- !ruby/object:Gem::Version
|
96
82
|
version: 1.7.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rack
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '1.0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: json
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '1.0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '1.0'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: bundler
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|