Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
bugzilla
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
etersoft
bugzilla
Commits
8b989123
Commit
8b989123
authored
Aug 12, 2014
by
Simon Green
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bug 419568 - Web Service module to create a component
r=dkl, a=sgreen
parent
2863a667
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
204 additions
and
0 deletions
+204
-0
WebService.pm
Bugzilla/WebService.pm
+2
-0
Component.pm
Bugzilla/WebService/Component.pm
+148
-0
Constants.pm
Bugzilla/WebService/Constants.pm
+6
-0
REST.pm
Bugzilla/WebService/Server/REST.pm
+1
-0
Component.pm
Bugzilla/WebService/Server/REST/Resources/Component.pm
+47
-0
No files found.
Bugzilla/WebService.pm
View file @
8b989123
...
...
@@ -389,6 +389,8 @@ objects.
=item L<Bugzilla::WebService::FlagType>
=item L<Bugzilla::WebService::Component>
=item L<Bugzilla::WebService::Group>
=item L<Bugzilla::WebService::Product>
...
...
Bugzilla/WebService/Component.pm
0 → 100644
View file @
8b989123
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
package
Bugzilla::WebService::
Component
;
use
5.10.1
;
use
strict
;
use
base
qw(Bugzilla::WebService)
;
use
Bugzilla::
Component
;
use
Bugzilla::
Constants
;
use
Bugzilla::
Error
;
use
Bugzilla::WebService::
Constants
;
use
Bugzilla::WebService::
Util
qw(translate params_to_objects validate)
;
use
constant
MAPPED_FIELDS
=>
{
default_assignee
=>
'initialowner'
,
default_qa_contact
=>
'initialqacontact'
,
default_cc
=>
'initial_cc'
,
is_open
=>
'isactive'
,
};
sub
create
{
my
(
$self
,
$params
)
=
@_
;
my
$user
=
Bugzilla
->
login
(
LOGIN_REQUIRED
);
$user
->
in_group
(
'editcomponents'
)
||
scalar
@
{
$user
->
get_products_by_permission
(
'editcomponents'
)
}
||
ThrowUserError
(
'auth_failure'
,
{
group
=>
'editcomponents'
,
action
=>
'edit'
,
object
=>
'components'
});
my
$product
=
$user
->
check_can_admin_product
(
$params
->
{
product
});
# Translate the fields
my
$values
=
translate
(
$params
,
MAPPED_FIELDS
);
$values
->
{
product
}
=
$product
;
# Create the component and return the newly created id.
my
$component
=
Bugzilla::
Component
->
create
(
$values
);
return
{
id
=>
$self
->
type
(
'int'
,
$component
->
id
)
};
}
1
;
__END__
=head1 NAME
Bugzilla::Webservice::Component - The Component API
=head1 DESCRIPTION
This part of the Bugzilla API allows you to deal with the available product components.
You will be able to get information about them as well as manipulate them.
=head1 METHODS
See L<Bugzilla::WebService> for a description of how parameters are passed,
and what B<STABLE>, B<UNSTABLE>, and B<EXPERIMENTAL> mean.
=head1 Component Creation and Modification
=head2 create
B<EXPERIMENTAL>
=over
=item B<Description>
This allows you to create a new component in Bugzilla.
=item B<Params>
Some params must be set, or an error will be thrown. These params are
marked B<Required>.
=over
=item C<name>
B<Required> C<string> The name of the new component.
=item C<product>
B<Required> C<string> The name of the product that the component must be
added to. This product must already exist, and the user have the necessary
permissions to edit components for it.
=item C<description>
B<Required> C<string> The description of the new component.
=item C<default_assignee>
B<Required> C<string> The login name of the default assignee of the component.
=item C<default_cc>
C<array> An array of strings with each element representing one login name of the default CC list.
=item C<default_qa_contact>
C<string> The login name of the default QA contact for the component.
=item C<is_open>
C<boolean> 1 if you want to enable the component for bug creations. 0 otherwise. Default is 1.
=back
=item B<Returns>
A hash with one key: C<id>. This will represent the ID of the newly-added
component.
=item B<Errors>
=over
=item 304 (Authorization Failure)
You are not authorized to create a new component.
=item 1200 (Component already exists)
The name that you specified for the new component already exists in the
specified product.
=back
=item B<History>
=over
=item Added in Bugzilla B<5.0>.
=back
=back
Bugzilla/WebService/Constants.pm
View file @
8b989123
...
...
@@ -203,6 +203,11 @@ use constant WS_ERROR_CODE => {
flag_type_sortkey_invalid
=>
1104
,
flag_type_not_editable
=>
1105
,
# Component errors are 1200-1300
component_already_exists
=>
1200
,
component_is_last
=>
1201
,
component_has_bugs
=>
1202
,
# Errors thrown by the WebService itself. The ones that are negative
# conform to http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php
xmlrpc_invalid_value
=>
-
32600
,
...
...
@@ -282,6 +287,7 @@ sub WS_DISPATCH {
'Bugzilla'
=>
'Bugzilla::WebService::Bugzilla'
,
'Bug'
=>
'Bugzilla::WebService::Bug'
,
'Classification'
=>
'Bugzilla::WebService::Classification'
,
'Component'
=>
'Bugzilla::WebService::Component'
,
'FlagType'
=>
'Bugzilla::WebService::FlagType'
,
'Group'
=>
'Bugzilla::WebService::Group'
,
'Product'
=>
'Bugzilla::WebService::Product'
,
...
...
Bugzilla/WebService/Server/REST.pm
View file @
8b989123
...
...
@@ -23,6 +23,7 @@ use Bugzilla::WebService::Util qw(taint_data fix_credentials);
use
Bugzilla::WebService::Server::REST::Resources::
Bug
;
use
Bugzilla::WebService::Server::REST::Resources::
Bugzilla
;
use
Bugzilla::WebService::Server::REST::Resources::
Classification
;
use
Bugzilla::WebService::Server::REST::Resources::
Component
;
use
Bugzilla::WebService::Server::REST::Resources::
FlagType
;
use
Bugzilla::WebService::Server::REST::Resources::
Group
;
use
Bugzilla::WebService::Server::REST::Resources::
Product
;
...
...
Bugzilla/WebService/Server/REST/Resources/Component.pm
0 → 100644
View file @
8b989123
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
package
Bugzilla::WebService::Server::REST::Resources::
Component
;
use
5.10.1
;
use
strict
;
use
Bugzilla::WebService::
Constants
;
use
Bugzilla::WebService::
Component
;
use
Bugzilla::
Error
;
BEGIN
{
*
Bugzilla::WebService::Component::
rest_resources
=
\&
_rest_resources
;
};
sub
_rest_resources
{
my
$rest_resources
=
[
qr{^/component$}
,
{
POST
=>
{
method
=>
'create'
,
success_code
=>
STATUS_CREATED
}
},
];
return
$rest_resources
;
}
1
;
__END__
=head1 NAME
Bugzilla::Webservice::Server::REST::Resources::Component - The Component REST API
=head1 DESCRIPTION
This part of the Bugzilla REST API allows you create Components.
See L<Bugzilla::WebService::Component> for more details on how to use this
part of the REST API.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment