BZ-Client
view release on metacpan or search on metacpan
lib/BZ/Client/Product.pm view on Meta::CPAN
#!/bin/false
# PODNAME: BZ::Client::Product
# ABSTRACT: Client side representation of a product in Bugzilla
# vim: softtabstop=4 tabstop=4 shiftwidth=4 ft=perl expandtab smarttab
use strict;
use warnings 'all';
package BZ::Client::Product;
$BZ::Client::Product::VERSION = '4.4004';
use parent qw( BZ::Client::API );
# See https://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService/Product.html
## functions
sub create {
my($class, $client, $params) = @_;
return $class->_create($client, 'Product.create', $params);
}
sub update {
my($class, $client, $params) = @_;
return $class->_returns_array($client, 'Product.update', $params, 'components');
}
# convenience function
sub _get_list {
my($class, $methodName, $client) = @_;
my $result = $class->api_call($client, $methodName);
my $ids = $result->{'ids'};
if (!$ids || 'ARRAY' ne ref($ids)) {
$class->error($client, 'Invalid reply by server, expected array of ids.');
}
return $ids
}
sub get_selectable_products {
my($class, $client) = @_;
$client->log('debug', $class . '::get_selectable_products: Asking');
my $result = $class->_get_list('Product.get_selectable_products', $client);
$client->log('debug', $class . '::get_selectable_products: Got ' . @$result);
return wantarray ? @$result : $result
}
sub get_enterable_products {
my($class, $client) = @_;
$client->log('debug', $class . '::get_enterable_products: Asking');
my $result = $class->_get_list('Product.get_enterable_products', $client);
$client->log('debug', $class . '::get_enterable_products: Got ' . @$result);
return wantarray ? @$result : $result
}
sub get_accessible_products {
my($class, $client) = @_;
$client->log('debug', $class . '::get_accessible_products: Asking');
my $result = $class->_get_list('Product.get_accessible_products', $client);
$client->log('debug', $class . '::get_accessible_products: Got ' . @$result);
return wantarray ? @$result : $result
}
# do everything in one place
sub _get {
my($class, $client, $result) = @_;
my $products = $result->{'products'};
if (!$products or 'ARRAY' ne ref $products) {
$class->error($client, 'Invalid reply by server, expected array of products.');
}
my @result;
for my $product (@$products) {
push @result, $class->new(
id => $product->{'id'},
name => $product->{'name'},
description => $product->{'description'},
internals => $product->{'internals'}
);
}
return wantarray ? @result : \@result
}
sub get_products {
my($class, $client, $params) = @_;
( run in 0.812 second using v1.01-cache-2.11-cpan-39bf76dae61 )