JIRA-REST-Class
view release on metacpan or search on metacpan
lib/JIRA/REST/Class/Issue.pm view on Meta::CPAN
local $Carp::CarpLevel = $Carp::CarpLevel + 2;
confess "add_subtask() called with unknown parent '$issue'";
}
sub _get_subtask_issue_type {
my ( $self, $project, $fields ) = @_;
# let's set this once in case we need to throw an exception
local $Carp::CarpLevel = $Carp::CarpLevel + 2;
if ( exists $fields->{issuetype} && defined $fields->{issuetype} ) {
my $type = $fields->{issuetype};
if ( $self->obj_isa( $type, 'issuetype' ) ) {
# we were passed an issue type object
return $type if $type->subtask;
confess
"add_subtask() called with a non-subtask issue type: '$type'";
}
my ( $issuetype ) = grep { ##
$_->id eq $type || $_->name eq $type
} $project->issueTypes;
return $issuetype if $issuetype && $issuetype->subtask;
if ( !defined $issuetype ) {
confess 'add_subtask() called with a value that does not '
. "correspond to a known issue type: '$type'";
}
confess
"add_subtask() called with a non-subtask issue type: '$issuetype'";
}
# we didn't get passed an issue type, so let's find one
my @subtasks = $self->project->subtaskIssueTypes;
if ( @subtasks == 1 ) {
return $subtasks[0];
}
my $count = scalar @subtasks;
my $list = join q{, } => @subtasks;
confess 'add_subtask() called without specifying a subtask type; '
. "there are $count subtask types: $list";
}
###########################################################################
#pod =method B<update>
#pod
#pod Puts an update to JIRA. Accepts a hash of fields => values to be put.
#pod
#pod =cut
sub update {
my $self = shift;
my $hash = {};
while ( @_ ) {
my $field = shift;
my $value = shift;
$hash->{$field} = $value;
}
return $self->put(
{
update => $hash,
}
);
}
#pod =method B<put_field>
#pod
#pod Puts a value to a field. Accepts the field name and the value as parameters.
#pod
#pod =cut
sub put_field {
my $self = shift;
my $field = shift;
my $value = shift;
return $self->put(
{
fields => { $field => $value },
}
);
}
#pod =method B<reload>
#pod
#pod Reload the issue from the JIRA server.
#pod
#pod =cut
sub reload {
my $self = shift;
$self->{data} = $self->get;
$self->init( $self->factory );
return;
}
###########################################################################
#pod =internal_method B<get>
#pod
#pod Wrapper around C<JIRA::REST::Class>' L<get|JIRA::REST::Class/get> method that
#pod defaults to this issue's URL. Allows for extra parameters to be specified.
#pod
#pod =cut
sub get {
my ( $self, $extra, @args ) = @_;
$extra //= q{};
return $self->jira->get( $self->url . $extra, @args );
}
#pod =internal_method B<post>
( run in 0.574 second using v1.01-cache-2.11-cpan-df04353d9ac )