bicho 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/bicho/bug.rb +1 -1
- data/lib/bicho/client.rb +39 -13
- data/lib/bicho/plugins/novell.rb +6 -3
- data/lib/bicho/version.rb +1 -1
- data/test/test_novell_plugin.rb +17 -0
- metadata +88 -51
data/lib/bicho/bug.rb
CHANGED
data/lib/bicho/client.rb
CHANGED
@@ -62,15 +62,40 @@ module Bicho
|
|
62
62
|
|
63
63
|
include Bicho::Logging
|
64
64
|
|
65
|
-
|
65
|
+
# @return [URI] XML-RPC API end-point
|
66
|
+
#
|
67
|
+
# This URL is automatically inferred from the
|
68
|
+
# Client#site_url
|
69
|
+
#
|
70
|
+
# Plugins can modify the inferred value by providing
|
71
|
+
# a transform_api_url_hook(url, logger) method returning
|
72
|
+
# the modified value.
|
73
|
+
#
|
74
|
+
attr_reader :api_url
|
66
75
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
76
|
+
# @return [URI] Bugzilla installation website
|
77
|
+
#
|
78
|
+
# This value is provided at construction time
|
79
|
+
attr_reader :site_url
|
80
|
+
|
81
|
+
# @return [String] user id, available after login
|
82
|
+
attr_reader :userid
|
83
|
+
|
84
|
+
# @visibility private
|
85
|
+
# Implemented only to warn users about the replacement
|
86
|
+
# APIs
|
87
|
+
def url
|
88
|
+
warn "url is deprecated. Use site_url or api_url"
|
89
|
+
raise NoMethodError
|
90
|
+
end
|
72
91
|
|
73
|
-
|
92
|
+
# @param [String] site_url Bugzilla installation site url
|
93
|
+
def initialize(site_url)
|
94
|
+
# Don't modify the original url
|
95
|
+
@site_url = site_url.is_a?(URI) ? site_url.clone : URI.parse(site_url)
|
96
|
+
|
97
|
+
@api_url = @site_url.clone
|
98
|
+
@api_url.path = '/xmlrpc.cgi'
|
74
99
|
|
75
100
|
# Scan plugins
|
76
101
|
plugin_glob = File.join(File.dirname(__FILE__), 'plugins', '*.rb')
|
@@ -84,10 +109,14 @@ module Bicho
|
|
84
109
|
pl_class = ::Bicho::Plugins.const_get(cnt)
|
85
110
|
pl_instance = pl_class.new
|
86
111
|
logger.debug("Loaded: #{pl_instance}")
|
87
|
-
|
112
|
+
|
113
|
+
# Modify API url
|
114
|
+
if pl_instance.respond_to?(:transform_api_url_hook)
|
115
|
+
@api_url = pl_instance.transform_api_url_hook(@api_url, logger)
|
116
|
+
end
|
88
117
|
end
|
89
118
|
|
90
|
-
@client = XMLRPC::Client.new_from_uri(
|
119
|
+
@client = XMLRPC::Client.new_from_uri(@api_url.to_s, nil, 900)
|
91
120
|
@client.set_debug
|
92
121
|
|
93
122
|
# User.login sets the credentials cookie for subsequent calls
|
@@ -96,9 +125,6 @@ module Bicho
|
|
96
125
|
handle_faults(ret)
|
97
126
|
@userid = ret['id']
|
98
127
|
end
|
99
|
-
|
100
|
-
# Save modified url
|
101
|
-
@url = url
|
102
128
|
end
|
103
129
|
|
104
130
|
def cookie
|
@@ -141,7 +167,7 @@ module Bicho
|
|
141
167
|
end
|
142
168
|
|
143
169
|
logger.info("Expanding named query: '#{what}' with '#{cookie}'")
|
144
|
-
http = Net::HTTP.new(@
|
170
|
+
http = Net::HTTP.new(@api_url.host, @api_url.port)
|
145
171
|
http.use_ssl = true
|
146
172
|
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
147
173
|
http.set_debug_output(Bicho::LoggerIODevice.new)
|
data/lib/bicho/plugins/novell.rb
CHANGED
@@ -58,17 +58,20 @@ module Bicho
|
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
|
-
def
|
62
|
-
|
63
|
-
return if not url.host.include?('bugzilla.novell.com')
|
61
|
+
def transform_api_url_hook(url, logger)
|
62
|
+
|
63
|
+
return url if not url.host.include?('bugzilla.novell.com')
|
64
64
|
|
65
65
|
auth = Novell.oscrc_credentials
|
66
|
+
|
67
|
+
url = url.clone
|
66
68
|
url.user = auth[:user]
|
67
69
|
url.password = auth[:password]
|
68
70
|
url.host = url.host.gsub(/bugzilla\.novell.com/, 'apibugzilla.novell.com')
|
69
71
|
url.path = url.path.gsub(/xmlrpc\.cgi/, 'tr_xmlrpc.cgi')
|
70
72
|
|
71
73
|
logger.debug("#{self} : Rewrote url to '#{url.to_s.gsub(/#{url.user}:#{url.password}/, "USER:PASS")}'")
|
74
|
+
return url
|
72
75
|
end
|
73
76
|
|
74
77
|
end
|
data/lib/bicho/version.rb
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'helper')
|
2
|
+
|
3
|
+
class NovellPlugin_test < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_urls_are_correct
|
6
|
+
client = Bicho::Client.new('https://bugzilla.novell.com')
|
7
|
+
|
8
|
+
assert_raises NoMethodError do
|
9
|
+
client.url
|
10
|
+
end
|
11
|
+
|
12
|
+
assert_equal 'https://apibugzilla.novell.com/tr_xmlrpc.cgi', "#{client.api_url.scheme}://#{client.api_url.host}#{client.api_url.path}"
|
13
|
+
assert_equal 'https://bugzilla.novell.com', "#{client.site_url.scheme}://#{client.site_url.host}#{client.site_url.path}"
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
metadata
CHANGED
@@ -1,68 +1,94 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: bicho
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 21
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 5
|
10
|
+
version: 0.0.5
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Duncan Mac-Vicar P.
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
17
|
+
|
18
|
+
date: 2012-01-02 00:00:00 +01:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
15
22
|
name: inifile
|
16
|
-
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
17
25
|
none: false
|
18
|
-
requirements:
|
26
|
+
requirements:
|
19
27
|
- - ~>
|
20
|
-
- !ruby/object:Gem::Version
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 13
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
- 4
|
33
|
+
- 1
|
21
34
|
version: 0.4.1
|
22
35
|
type: :runtime
|
23
|
-
|
24
|
-
|
25
|
-
- !ruby/object:Gem::Dependency
|
36
|
+
version_requirements: *id001
|
37
|
+
- !ruby/object:Gem::Dependency
|
26
38
|
name: trollop
|
27
|
-
|
39
|
+
prerelease: false
|
40
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
28
41
|
none: false
|
29
|
-
requirements:
|
30
|
-
- -
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
|
42
|
+
requirements:
|
43
|
+
- - ">="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
hash: 47
|
46
|
+
segments:
|
47
|
+
- 1
|
48
|
+
- 16
|
49
|
+
version: "1.16"
|
33
50
|
type: :runtime
|
34
|
-
|
35
|
-
|
36
|
-
- !ruby/object:Gem::Dependency
|
51
|
+
version_requirements: *id002
|
52
|
+
- !ruby/object:Gem::Dependency
|
37
53
|
name: highline
|
38
|
-
|
54
|
+
prerelease: false
|
55
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
39
56
|
none: false
|
40
|
-
requirements:
|
57
|
+
requirements:
|
41
58
|
- - ~>
|
42
|
-
- !ruby/object:Gem::Version
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
hash: 11
|
61
|
+
segments:
|
62
|
+
- 1
|
63
|
+
- 6
|
64
|
+
- 2
|
43
65
|
version: 1.6.2
|
44
66
|
type: :runtime
|
45
|
-
|
46
|
-
|
47
|
-
- !ruby/object:Gem::Dependency
|
67
|
+
version_requirements: *id003
|
68
|
+
- !ruby/object:Gem::Dependency
|
48
69
|
name: nokogiri
|
49
|
-
|
70
|
+
prerelease: false
|
71
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
50
72
|
none: false
|
51
|
-
requirements:
|
52
|
-
- -
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
hash: 3
|
77
|
+
segments:
|
78
|
+
- 0
|
79
|
+
version: "0"
|
55
80
|
type: :runtime
|
56
|
-
|
57
|
-
version_requirements: *6669180
|
81
|
+
version_requirements: *id004
|
58
82
|
description: Library to access bugzilla
|
59
|
-
email:
|
83
|
+
email:
|
60
84
|
- dmacvicar@suse.de
|
61
|
-
executables:
|
85
|
+
executables:
|
62
86
|
- bicho
|
63
87
|
extensions: []
|
88
|
+
|
64
89
|
extra_rdoc_files: []
|
65
|
-
|
90
|
+
|
91
|
+
files:
|
66
92
|
- .gitignore
|
67
93
|
- Gemfile
|
68
94
|
- MIT-LICENSE
|
@@ -83,32 +109,43 @@ files:
|
|
83
109
|
- lib/bicho/query.rb
|
84
110
|
- lib/bicho/version.rb
|
85
111
|
- test/helper.rb
|
112
|
+
- test/test_novell_plugin.rb
|
86
113
|
- test/test_query.rb
|
114
|
+
has_rdoc: true
|
87
115
|
homepage: http://github.com/dmacvicar/bicho
|
88
116
|
licenses: []
|
117
|
+
|
89
118
|
post_install_message:
|
90
119
|
rdoc_options: []
|
91
|
-
|
120
|
+
|
121
|
+
require_paths:
|
92
122
|
- lib
|
93
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
123
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
94
124
|
none: false
|
95
|
-
requirements:
|
96
|
-
- -
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
|
99
|
-
|
125
|
+
requirements:
|
126
|
+
- - ">="
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
hash: 3
|
129
|
+
segments:
|
130
|
+
- 0
|
131
|
+
version: "0"
|
132
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
100
133
|
none: false
|
101
|
-
requirements:
|
102
|
-
- -
|
103
|
-
- !ruby/object:Gem::Version
|
104
|
-
|
134
|
+
requirements:
|
135
|
+
- - ">="
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
hash: 3
|
138
|
+
segments:
|
139
|
+
- 0
|
140
|
+
version: "0"
|
105
141
|
requirements: []
|
142
|
+
|
106
143
|
rubyforge_project: bicho
|
107
|
-
rubygems_version: 1.
|
144
|
+
rubygems_version: 1.6.2
|
108
145
|
signing_key:
|
109
146
|
specification_version: 3
|
110
147
|
summary: Library to access bugzilla
|
111
|
-
test_files:
|
148
|
+
test_files:
|
112
149
|
- test/helper.rb
|
150
|
+
- test/test_novell_plugin.rb
|
113
151
|
- test/test_query.rb
|
114
|
-
has_rdoc:
|