ruby-bugzilla 0.4.1 → 0.5.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/README.rdoc CHANGED
@@ -4,15 +4,23 @@ This aims to provide similar features in Ruby to access to Bugzilla
4
4
  through {WebService APIs}[http://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService.html]. currently the following
5
5
  APIs are available:
6
6
 
7
+ * Bugzilla::WebService::Bug[http://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService/Bug.html]
7
8
  * Bugzilla::WebService::Bugzilla[http://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService/Bugzilla.html]
9
+ * Bugzilla::WebService::Classification[http://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService/Classification.html]
8
10
  * Bugzilla::WebService::Product[http://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService/Product.html]
9
- * Bugzilla::WebService::Bug[http://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService/Bug.html]
10
11
  * Bugzilla::WebService::User[http://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService/User.html]
11
12
 
12
13
  == Copyright
13
14
 
14
15
  Copyright (c) 2010-2012 Red Hat, Inc. See COPYING for details.
15
16
 
17
+ == License
18
+
19
+ This library is free software: you can redistribute it and/or
20
+ modify it under the terms of the GNU Lesser General Public
21
+ License as published by the Free Software Foundation, either
22
+ version 3 of the License, or (at your option) any later version.
23
+
16
24
  == Authors
17
25
 
18
26
  Akira TAGOH
data/bin/bzconsole CHANGED
@@ -1,25 +1,23 @@
1
1
  #! /usr/bin/env ruby
2
2
  # -*- coding: utf-8 -*-
3
- # bzconsole.rb
3
+ # bzconsole
4
4
  # Copyright (C) 2010-2012 Red Hat, Inc.
5
5
  #
6
6
  # Authors:
7
7
  # Akira TAGOH <tagoh@redhat.com>
8
8
  #
9
- # This library is free software; you can redistribute it and/or
9
+ # This library is free software: you can redistribute it and/or
10
10
  # modify it under the terms of the GNU Lesser General Public
11
- # License as published by the Free Software Foundation; either
12
- # version 2 of the License, or (at your option) any later version.
11
+ # License as published by the Free Software Foundation, either
12
+ # version 3 of the License, or (at your option) any later version.
13
13
  #
14
14
  # This library is distributed in the hope that it will be useful,
15
15
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
- # Lesser General Public License for more details.
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
+ # GNU General Public License for more details.
18
18
  #
19
- # You should have received a copy of the GNU Lesser General Public
20
- # License along with this library; if not, write to the
21
- # Free Software Foundation, Inc., 59 Temple Place - Suite 330,
22
- # Boston, MA 02111-1307, USA.
19
+ # You should have received a copy of the GNU General Public License
20
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
23
21
 
24
22
  require 'optparse'
25
23
  require 'time'
@@ -4,20 +4,18 @@
4
4
  # Authors:
5
5
  # Akira TAGOH <tagoh@redhat.com>
6
6
  #
7
- # This program is free software; you can redistribute it and/or modify
8
- # it under the terms of the GNU General Public License as published by
9
- # the Free Software Foundation; either version 2 of the License, or
10
- # (at your option) any later version.
7
+ # This library is free software: you can redistribute it and/or
8
+ # modify it under the terms of the GNU Lesser General Public
9
+ # License as published by the Free Software Foundation, either
10
+ # version 3 of the License, or (at your option) any later version.
11
11
  #
12
- # This program is distributed in the hope that it will be useful,
12
+ # This library is distributed in the hope that it will be useful,
13
13
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
14
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
15
  # GNU General Public License for more details.
16
16
  #
17
17
  # You should have received a copy of the GNU General Public License
18
- # along with this program; if not, write to the Free Software
19
- # Foundation, Inc., 59 Temple Place - Suite 330,
20
- # Boston, MA 02111-1307, USA.
18
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
21
19
 
22
20
  require 'bugzilla/skeleton'
23
21
  require 'bugzilla/bugzilla'
@@ -20,6 +20,7 @@
20
20
  # Boston, MA 02111-1307, USA.
21
21
 
22
22
  require 'bugzilla/skeleton'
23
+ require 'bugzilla/bugzilla'
23
24
 
24
25
 
25
26
  module Bugzilla
data/lib/bugzilla/bug.rb CHANGED
@@ -4,20 +4,18 @@
4
4
  # Authors:
5
5
  # Akira TAGOH <tagoh@redhat.com>
6
6
  #
7
- # This program is free software; you can redistribute it and/or modify
8
- # it under the terms of the GNU General Public License as published by
9
- # the Free Software Foundation; either version 2 of the License, or
10
- # (at your option) any later version.
7
+ # This library is free software: you can redistribute it and/or
8
+ # modify it under the terms of the GNU Lesser General Public
9
+ # License as published by the Free Software Foundation, either
10
+ # version 3 of the License, or (at your option) any later version.
11
11
  #
12
- # This program is distributed in the hope that it will be useful,
12
+ # This library is distributed in the hope that it will be useful,
13
13
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
14
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
15
  # GNU General Public License for more details.
16
16
  #
17
17
  # You should have received a copy of the GNU General Public License
18
- # along with this program; if not, write to the Free Software
19
- # Foundation, Inc., 59 Temple Place - Suite 330,
20
- # Boston, MA 02111-1307, USA.
18
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
21
19
 
22
20
  require 'bugzilla/api_tmpl'
23
21
 
@@ -175,6 +173,8 @@ See http://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService/Bug.html
175
173
  Raw Bugzilla API to obtain the information about particular
176
174
  bugs in the database.
177
175
 
176
+ See http://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService/Bug.html
177
+
178
178
  =end
179
179
 
180
180
  =begin rdoc
@@ -184,6 +184,8 @@ bugs in the database.
184
184
  Raw Bugzilla API to obtain the history of changes for
185
185
  particular bugs in the database.
186
186
 
187
+ See http://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService/Bug.html
188
+
187
189
  =end
188
190
 
189
191
  =begin rdoc
@@ -193,6 +195,18 @@ particular bugs in the database.
193
195
  Raw Bugzilla API to search for bugs based on particular
194
196
  criteria.
195
197
 
198
+ See http://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService/Bug.html
199
+
200
+ =end
201
+
202
+ =begin rdoc
203
+
204
+ ==== Bugzilla::Bug#create(params)
205
+
206
+ Raw Bugzilla API to create a new bug in Bugzilla.
207
+
208
+ See http://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService/Bug.html
209
+
196
210
  =end
197
211
 
198
212
  protected
@@ -341,6 +355,11 @@ criteria.
341
355
  # FIXME
342
356
  end # def _update_see_also
343
357
 
358
+ def __update_tags(cmd, *args)
359
+ requires_version(cmd, 4.4)
360
+ # FIXME
361
+ end # def _update_tags
362
+
344
363
  end # class Bug
345
364
 
346
365
  end # module Bugzilla
data/lib/bugzilla/bug.rb~ CHANGED
@@ -1,4 +1,4 @@
1
- # product.rb
1
+ # bug.rb
2
2
  # Copyright (C) 2010-2012 Red Hat, Inc.
3
3
  #
4
4
  # Authors:
@@ -294,8 +294,31 @@ criteria.
294
294
  @iface.call(cmd, args[0])
295
295
  end # def _search
296
296
 
297
- def __create(cmd, *args)
298
- # FIXME
297
+ def _create(cmd, *args)
298
+ raise ArgumentError, "Invalid parameters" unless args[0].kind_of?(Hash)
299
+
300
+ required_fields = [:product, :component, :summary, :version]
301
+ defaulted_fields = [:description, :op_sys, :platform, :priority, :severity]
302
+
303
+ res = check_version("3.0.4")
304
+ unless res[0] then
305
+ required_fields.push(*defaulted_fields)
306
+ end
307
+ required_fields.each do |f|
308
+ raise ArgumentError, sprintf("Required fields isn't given: %s", f) unless args[0].include?(f)
309
+ end
310
+ res = check_version(4.0)
311
+ unless res[0] then
312
+ raise ArgumentError, "groups field isn't available in this bugzilla" if args[0].include?("groups")
313
+ raise ArgumentError, "comment_is_private field isn't available in this bugzilla" if args[0].include?("comment_is_private")
314
+ else
315
+ if args[0].include?("commentprivacy") then
316
+ args[0]["comment_is_private"] = args[0]["commentprivacy"]
317
+ args[0].delete("commentprivacy")
318
+ end
319
+ end
320
+
321
+ @iface.call(cmd, args[0])
299
322
  end # def _create
300
323
 
301
324
  def __add_attachment(cmd, *args)
@@ -4,20 +4,18 @@
4
4
  # Authors:
5
5
  # Akira TAGOH <tagoh@redhat.com>
6
6
  #
7
- # This program is free software; you can redistribute it and/or modify
8
- # it under the terms of the GNU General Public License as published by
9
- # the Free Software Foundation; either version 2 of the License, or
10
- # (at your option) any later version.
7
+ # This library is free software: you can redistribute it and/or
8
+ # modify it under the terms of the GNU Lesser General Public
9
+ # License as published by the Free Software Foundation, either
10
+ # version 3 of the License, or (at your option) any later version.
11
11
  #
12
- # This program is distributed in the hope that it will be useful,
12
+ # This library is distributed in the hope that it will be useful,
13
13
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
14
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
15
  # GNU General Public License for more details.
16
16
  #
17
17
  # You should have received a copy of the GNU General Public License
18
- # along with this program; if not, write to the Free Software
19
- # Foundation, Inc., 59 Temple Place - Suite 330,
20
- # Boston, MA 02111-1307, USA.
18
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
21
19
 
22
20
  require 'bugzilla/skeleton'
23
21
 
@@ -112,6 +110,16 @@ running on.
112
110
 
113
111
  See http://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService/Bugzilla.html
114
112
 
113
+ =end
114
+
115
+ =begin rdoc
116
+
117
+ ==== Bugzilla::Bugzilla#parameters
118
+
119
+ Raw Bugzilla API to obtain parameter values currently used in Bugzilla.
120
+
121
+ See http://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService/Bugzilla.html
122
+
115
123
  =end
116
124
 
117
125
  protected
@@ -136,6 +144,18 @@ See http://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService/Bugzilla.ht
136
144
  @iface.call(cmd)
137
145
  end # def _time
138
146
 
147
+ def _parameters(cmd, *args)
148
+ requires_version(cmd, 4.4)
149
+
150
+ @iface.call(cmd)
151
+ end # def _parameters
152
+
153
+ def __last_audit_time(cmd, *args)
154
+ requires_version(cmd, 4.4)
155
+
156
+ # FIXME
157
+ end # def _last_audit_time
158
+
139
159
  end # class Bugzilla
140
160
 
141
161
  end # module Bugzilla
@@ -1,4 +1,4 @@
1
- # skeleton.rb
1
+ # bugzilla.rb
2
2
  # Copyright (C) 2010-2012 Red Hat, Inc.
3
3
  #
4
4
  # Authors:
@@ -19,6 +19,7 @@
19
19
  # Foundation, Inc., 59 Temple Place - Suite 330,
20
20
  # Boston, MA 02111-1307, USA.
21
21
 
22
+ require 'bugzilla/skeleton'
22
23
 
23
24
  module Bugzilla
24
25
 
@@ -0,0 +1,76 @@
1
+ # classification.rb
2
+ # Copyright (C) 2010-2012 Red Hat, Inc.
3
+ #
4
+ # Authors:
5
+ # Akira TAGOH <tagoh@redhat.com>
6
+ #
7
+ # This library is free software: you can redistribute it and/or
8
+ # modify it under the terms of the GNU Lesser General Public
9
+ # License as published by the Free Software Foundation, either
10
+ # version 3 of the License, or (at your option) any later version.
11
+ #
12
+ # This library is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU General Public License
18
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
19
+
20
+ require 'bugzilla/api_tmpl'
21
+
22
+ module Bugzilla
23
+
24
+ =begin rdoc
25
+
26
+ === Bugzilla::Classification
27
+
28
+ Bugzilla::Classification class is to access
29
+ the Bugzilla::WebService::Classification API that allows you
30
+ to deal with the available Classifications.
31
+
32
+ =end
33
+
34
+ class Classification < APITemplate
35
+
36
+ =begin rdoc
37
+
38
+ ==== Bugzilla::Classification#get(params)
39
+
40
+ Raw Bugzilla API to obtain the information about a set of
41
+ classifications.
42
+
43
+ See http://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService/Classification.html
44
+
45
+ =end
46
+
47
+ def _get(cmd, args[0])
48
+ requires_version(cmd, 4.4)
49
+
50
+ params = {}
51
+
52
+ if ids.kind_of?(Hash) then
53
+ raise ArgumentError, sprintf("Invalid parameter: %s", ids.inspect) unless ids.include?('ids') || ids.include?('names')
54
+ params[:ids] = ids['ids'] || ids['names']
55
+ elsif ids.kind_of?(Array) then
56
+ r = ids.map {|x| x.kind_of?(Integer) ? x : nil}.compact
57
+ if r.length != ids.length then
58
+ params[:names] = ids
59
+ else
60
+ params[:ids] = ids
61
+ end
62
+ else
63
+ if ids.kind_of?(Integer) then
64
+ params[:ids] = [ids]
65
+ else
66
+ params[:names] = [ids]
67
+ end
68
+ end
69
+
70
+ @iface.call(cmd, params)
71
+ end # def _get
72
+
73
+ end # class Classification
74
+
75
+ end # module Bugzilla
76
+
@@ -0,0 +1,46 @@
1
+ # group.rb
2
+ # Copyright (C) 2010-2012 Red Hat, Inc.
3
+ #
4
+ # Authors:
5
+ # Akira TAGOH <tagoh@redhat.com>
6
+ #
7
+ # This library is free software: you can redistribute it and/or
8
+ # modify it under the terms of the GNU Lesser General Public
9
+ # License as published by the Free Software Foundation, either
10
+ # version 3 of the License, or (at your option) any later version.
11
+ #
12
+ # This library is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU General Public License
18
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
19
+
20
+ require 'bugzilla/api_tmpl'
21
+
22
+ module Bugzilla
23
+
24
+ =begin rdoc
25
+
26
+ === Bugzilla::Group
27
+
28
+ Bugzilla::Group class is to access
29
+ the Bugzilla::WebService::Group API that allows you to
30
+ create Groups and get information about them.
31
+
32
+ =end
33
+
34
+ class Group < APITemplate
35
+
36
+ def __create(cmd, *args)
37
+ # FIXME
38
+ end # def _create
39
+
40
+ def __update(cmd, *args)
41
+ # FIXME
42
+ end # def _update
43
+
44
+ end # class Group
45
+
46
+ end # module Bugzilla
@@ -0,0 +1,66 @@
1
+ # group.rb
2
+ # Copyright (C) 2010-2012 Red Hat, Inc.
3
+ #
4
+ # Authors:
5
+ # Akira TAGOH <tagoh@redhat.com>
6
+ #
7
+ # This library is free software: you can redistribute it and/or
8
+ # modify it under the terms of the GNU Lesser General Public
9
+ # License as published by the Free Software Foundation, either
10
+ # version 3 of the License, or (at your option) any later version.
11
+ #
12
+ # This library is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU General Public License
18
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
19
+
20
+ require 'bugzilla/api_tmpl'
21
+
22
+ module Bugzilla
23
+
24
+ =begin rdoc
25
+
26
+ === Bugzilla::Group
27
+
28
+ Bugzilla::Group class is to access
29
+ the Bugzilla::WebService::Group API that allows you to
30
+ create Groups and get information about them.
31
+
32
+ =end
33
+
34
+ class Group < APITemplate
35
+
36
+ =begin rdoc
37
+
38
+ ==== Bugzilla::Group#create(params)
39
+
40
+ Raw Bugzilla API to create a new group in Bugzilla.
41
+
42
+ See http://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService/Group.html
43
+
44
+ =end
45
+
46
+ =begin rdoc
47
+
48
+ ==== Bugzilla::Group#update(params)
49
+
50
+ Raw Bugzilla APi to update a group in Bugzilla.
51
+
52
+ See http://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService/Group.html
53
+
54
+ =end
55
+
56
+ def __create(cmd, *args)
57
+ # FIXME
58
+ end # def _create
59
+
60
+ def __update(cmd, *args)
61
+ # FIXME
62
+ end # def _update
63
+
64
+ end # class Group
65
+
66
+ end # module Bugzilla
@@ -4,20 +4,18 @@
4
4
  # Authors:
5
5
  # Akira TAGOH <tagoh@redhat.com>
6
6
  #
7
- # This program is free software; you can redistribute it and/or modify
8
- # it under the terms of the GNU General Public License as published by
9
- # the Free Software Foundation; either version 2 of the License, or
10
- # (at your option) any later version.
7
+ # This library is free software: you can redistribute it and/or
8
+ # modify it under the terms of the GNU Lesser General Public
9
+ # License as published by the Free Software Foundation, either
10
+ # version 3 of the License, or (at your option) any later version.
11
11
  #
12
- # This program is distributed in the hope that it will be useful,
12
+ # This library is distributed in the hope that it will be useful,
13
13
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
14
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
15
  # GNU General Public License for more details.
16
16
  #
17
17
  # You should have received a copy of the GNU General Public License
18
- # along with this program; if not, write to the Free Software
19
- # Foundation, Inc., 59 Temple Place - Suite 330,
20
- # Boston, MA 02111-1307, USA.
18
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
21
19
 
22
20
 
23
21
  module Bugzilla
@@ -4,20 +4,18 @@
4
4
  # Authors:
5
5
  # Akira TAGOH <tagoh@redhat.com>
6
6
  #
7
- # This program is free software; you can redistribute it and/or modify
8
- # it under the terms of the GNU General Public License as published by
9
- # the Free Software Foundation; either version 2 of the License, or
10
- # (at your option) any later version.
7
+ # This library is free software: you can redistribute it and/or
8
+ # modify it under the terms of the GNU Lesser General Public
9
+ # License as published by the Free Software Foundation, either
10
+ # version 3 of the License, or (at your option) any later version.
11
11
  #
12
- # This program is distributed in the hope that it will be useful,
12
+ # This library is distributed in the hope that it will be useful,
13
13
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
14
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
15
  # GNU General Public License for more details.
16
16
  #
17
17
  # You should have received a copy of the GNU General Public License
18
- # along with this program; if not, write to the Free Software
19
- # Foundation, Inc., 59 Temple Place - Suite 330,
20
- # Boston, MA 02111-1307, USA.
18
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
21
19
 
22
20
  require 'bugzilla/api_tmpl'
23
21
 
@@ -39,54 +37,57 @@ list the available Products and get information about them.
39
37
 
40
38
  ==== Bugzilla::Product#selectable_products
41
39
 
42
- Returns the products that the user can search on as Hash
43
- contains the product name as the Hash key and Array as the
44
- value. Array contains the list of _id_, _name_,
45
- _description_ and _internals_ according to API documentation
46
- though, actually the component, the version and the target
47
- milestone.
40
+ Returns Hash table for the products information that the user
41
+ can search on. the Hash key is the product name and containing
42
+ a Hash table which contains id, name, description,
43
+ is_active, default_milestone, has_uncomfirmed, classification,
44
+ components, versions and milestones. please see
45
+ http://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService/Product.html#get
46
+ for more details.
48
47
 
49
48
  =end
50
49
 
51
50
  def selectable_products
52
51
  ids = get_selectable_products
53
- get(ids)
52
+ Hash[*get(ids)['products'].map {|x| [x['name'], x]}.flatten]
54
53
  end # def selectable_products
55
54
 
56
55
  =begin rdoc
57
56
 
58
57
  ==== Bugzilla::Product#enterable_products
59
58
 
60
- Returns the products that the user can enter bugs against
61
- as Hash contains the product name as the Hash key and Array
62
- as the value. Array contains the list of _id_, _name_,
63
- _description_ and _internals_ according to API documentation
64
- though, actually the component, the version and the target
65
- milestone.
59
+ Returns Hash table for the products information that the user
60
+ can enter bugs against. the Hash key is the product name and
61
+ containing a Hash table which contains id, name, description,
62
+ is_active, default_milestone, has_uncomfirmed, classification,
63
+ components, versions and milestones. please see
64
+ http://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService/Product.html#get
65
+ for more details.
66
66
 
67
67
  =end
68
68
 
69
69
  def enterable_products
70
70
  ids = get_enterable_products
71
- get(ids)
71
+ Hash[*get(ids)['products'].map {|x| [x['name'], x]}.flatten]
72
72
  end # def enterable_products
73
73
 
74
74
  =begin rdoc
75
75
 
76
76
  ==== Bugzilla::Product#accessible_products
77
77
 
78
- Returns the products that the user can search or enter bugs
79
- against as Hash contains the product name as the Hash key
80
- and Array as the value. Array contains the list of _id_,
81
- _name_, _description_ and _internals_ according to API
82
- documentation though, actually the component, the version
83
- and the target milestone.
78
+ Returns Hash table for the products information that the user
79
+ can search or enter bugs against. the Hash key is the product
80
+ name and containing a Hash table which contains id, name, description,
81
+ is_active, default_milestone, has_uncomfirmed, classification,
82
+ components, versions and milestones. please see
83
+ http://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService/Product.html#get
84
+ for more details.
84
85
 
85
86
  =end
86
87
 
87
88
  def accessible_products
88
89
  ids = get_accessible_products
89
- get(ids)
90
+ Hash[*get(ids)['products'].map {|x| [x['name'], x]}.flatten]
90
91
  end # def accessible_products
91
92
 
92
93
  =begin rdoc
@@ -120,6 +121,17 @@ search or enter bugs against.
120
121
 
121
122
  See http://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService/Product.html
122
123
 
124
+ =end
125
+
126
+ =begin rdoc
127
+
128
+ ==== Bugzilla::Product#get(params)
129
+
130
+ Raw Bugzilla API to obtain a list of information about the products
131
+ passed to it.
132
+
133
+ See http://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService/Product.html
134
+
123
135
  =end
124
136
 
125
137
  protected
@@ -137,20 +149,43 @@ See http://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService/Product.htm
137
149
  end # def _get_accessible_products
138
150
 
139
151
  def _get(cmd, ids, *args)
152
+ # This is still in experimental and apparently the behavior was changed since 4.2.
153
+ # We don't keep the backward-compatibility and just require the proper version here.
154
+ requires_version(cmd, 4.2)
155
+
140
156
  params = {}
141
157
 
142
158
  if ids.kind_of?(Hash) then
143
- raise ArgumentError, sprintf("Invalid parameter: %s", ids.inspect) unless ids.include?('ids')
144
- params[:ids] = ids['ids']
159
+ raise ArgumentError, sprintf("Invalid parameter: %s", ids.inspect) unless ids.include?('ids') || ids.include?('names')
160
+ params[:ids] = ids['ids'] || ids['names']
145
161
  elsif ids.kind_of?(Array) then
146
- params[:ids] = ids
162
+ r = ids.map {|x| x.kind_of?(Integer) ? x : nil}.compact
163
+ if r.length != ids.length then
164
+ params[:names] = ids
165
+ else
166
+ params[:ids] = ids
167
+ end
147
168
  else
148
- params[:ids] = [ids]
169
+ if ids.kind_of?(Integer) then
170
+ params[:ids] = [ids]
171
+ else
172
+ params[:names] = [ids]
173
+ end
149
174
  end
150
175
 
151
176
  @iface.call(cmd, params)
152
177
  end # def _get
153
178
 
179
+ def __create(cmd, *args)
180
+ # FIXME
181
+ end # def _create
182
+
183
+ def __update(cmd, *args)
184
+ requires_version(cmd, 4.4)
185
+
186
+ # FIXME
187
+ end # def _update
188
+
154
189
  end # class Product
155
190
 
156
191
  end # module Bugzilla