BZ-Client
view release on metacpan or search on metacpan
lib/BZ/Client/Bug.pm view on Meta::CPAN
sub legal_values {
my($class, $client, $field) = @_;
my $params = { 'field' => $field };
return $class->_returns_array($client, 'Bug.legal_values', $params, 'values');
}
sub get {
my($class, $client, $params) = @_;
unless (ref $params) {
$params = [ $params ]
}
if (ref $params eq 'ARRAY') {
$params = { ids => $params }
}
elsif (ref $params eq 'HASH') {
$params->{'permissive'} = BZ::Client::XMLRPC::boolean::TRUE()
if $params->{'permissive'};
}
my $bugs = $class->_returns_array($client, 'Bug.get', $params, 'bugs');
my @result;
for my $bug (@$bugs) {
push(@result, $class->new(%$bug));
}
$client->log('debug', $class . '::get: Got ' . scalar(@result));
return wantarray ? @result : \@result
}
sub history {
my($class, $client, $params) = @_;
return $class->_returns_array($client, 'Bug.history', $params, 'bugs');
}
sub possible_duplicates {
my($class, $client, $params) = @_;
my $bugs = $class->_returns_array($client, 'Bug.possible_duplicates', $params, 'bugs');
my @result;
for my $bug (@$bugs) {
push(@result, $class->new(%$bug));
}
$client->log('debug', $class . '::possible_duplicates: Got ' . scalar(@result));
return wantarray ? @result : \@result
}
sub search {
my($class, $client, $params) = @_;
my $bugs = $class->_returns_array($client, 'Bug.search', $params, 'bugs');
my @result;
for my $bug (@$bugs) {
push(@result, $class->new(%$bug));
}
$client->log('debug', $class . '::search: Found ' . join(',',@result));
return wantarray ? @result : \@result
}
sub create {
my($class, $client, $params) = @_;
return $class->_create($client, 'Bug.create', $params);
}
sub update {
my($class, $client, $params) = @_;
return $class->_returns_array($client, 'Bug.update', $params, 'bugs');
}
sub update_see_also {
my($class, $client, $params) = @_;
$client->log('debug', $class . '::update_see_also: Updating See-Also');
my $result = $class->api_call($client, 'Bug.update_see_also', $params);
my $changes = $result->{'changes'};
if (!$changes || 'HASH' ne ref($changes)) {
$class->error($client, 'Invalid reply by server, expected hash of changed bug details.');
}
$client->log('debug', $class . '::update_see_also: Updated stuff');
return wantarray ? %$changes : $changes
}
sub update_tags {
my($class, $client, $params) = @_;
$client->log('debug', $class . '::update_tags: Updating Tags');
my $result = $class->api_call($client, 'Bug.update_tags', $params);
my $changes = $result->{'changes'};
if (!$changes || 'HASH' ne ref($changes)) {
$class->error($client, 'Invalid reply by server, expected hash of changed bug details.');
}
$client->log('debug', $class . '::update_tags: Updated stuff');
return wantarray ? %$changes : $changes
}
## methods
sub id {
my $self = shift;
if (@_) {
$self->{'id'} = shift;
}
else {
return $self->{'id'}
}
}
sub alias {
my $self = shift;
if (@_) {
my $alias = shift;
if (ref $alias eq 'ARRAY' && @$a) {
$self->{'alias'} = $alias->[0];
}
if (not ref $alias) {
$self->{'alias'} = $alias;
}
# silently ignore anything else
}
else {
return '' unless defined $self->{'alias'};
# long form so its clear what is going on.
if (ref $self->{'alias'}) {
if (ref $self->{'alias'} eq 'ARRAY'
and @{$self->{'alias'}}) {
return $self->{'alias'}->[0];
}
return ''
}
# fall back
return $self->{'alias'}
}
}
sub assigned_to {
my $self = shift;
if (@_) {
$self->{'assigned_to'} = shift;
}
else {
return $self->{'assigned_to'}
( run in 0.685 second using v1.01-cache-2.11-cpan-39bf76dae61 )