BZ-Client
view release on metacpan or search on metacpan
lib/BZ/Client/Bug/Attachment.pm view on Meta::CPAN
my($class, $client, $params) = @_;
$client->log('debug', __PACKAGE__ . "::get: Asking for $params");
my $result = $class->api_call($client, 'Bug.attachments', $params);
if (my $attachments = $result->{attachments}) {
$class->error($client,
'Invalid reply by server, expected hash of attachments.')
unless ($attachments and 'HASH' eq ref($attachments));
for my $id (keys %$attachments) {
$attachments->{$id}->{data} =
BZ::Client::XMLRPC::base64->new64($attachments->{$id}->{data});
$attachments->{$id} = __PACKAGE__
->new( %{$attachments->{$id}} );
}
}
if (my $bugs = $result->{bugs}) {
$class->error($client,
'Invalid reply by server, expected array of bugs.')
unless ($bugs and 'HASH' eq ref($bugs));
for my $id (keys %$bugs) {
$bugs->{$id} = [
map { __PACKAGE__->new( %$_ ) }
map { $_->{data} = BZ::Client::XMLRPC::base64->new64($_->{data}) if $_->{data}; $_ }
@{$bugs->{$id}} ];
}
}
$client->log('debug', __PACKAGE__ . '::get: Got ' . %$result);
return wantarray ? %$result : $result
}
sub add {
my($class, $client, $params) = @_;
# $params = { ids => [], file_name => basename($file), content_type => '?', summary=> $filename, data => \$content
$client->log('debug', __PACKAGE__ . '::add: Attaching a file');
if ( ref $params eq 'HASH' ) {
my $filename;
if ( ! $params->{data}
and $filename = $params->{file_name}
and -f $filename ) {
$params->{data} = do {
local $/;
open( my $fh, '<', $filename );
binmode $fh;
<$fh>
};
$params->{file_name} = basename($params->{file_name});
}
$params->{data} = BZ::Client::XMLRPC::base64->new($params->{data})
if (exists $params->{data} and ref $params->{data} eq '');
}
my $result = $class->api_call($client, 'Bug.add_attachment', $params);
my $ids = $result->{'ids'};
$class->error($client, 'Invalid reply by server, expected attachment ID.')
unless $ids;
return wantarray ? @$ids : $ids
}
sub update {
my($class, $client, $params) = @_;
return $class->_returns_array($client, 'Bug.update_attachment', $params, 'attachments');
}
## rw methods
sub id {
my $self = shift;
if (@_) {
$self->{'id'} = shift;
}
else {
return $self->{'id'}
}
}
sub data {
my $self = shift;
if (@_) {
my $data = shift;
$self->{'data'} = ref $data ?
$data : BZ::Client::XMLRPC::base64->new($data);
}
else {
return $self->{'data'}
}
}
sub file_name {
my $self = shift;
if (@_) {
$self->{'file_name'} = shift;
}
else {
return $self->{'file_name'}
}
}
sub description { goto &summary }
sub summary {
my $self = shift;
if (@_) {
$self->{'summary'} = shift;
}
else {
return $self->{'summary'} || $self->{'description'}
}
}
sub content_type {
my $self = shift;
if (@_) {
$self->{'content_type'} = shift;
}
else {
return $self->{'content_type'}
}
}
( run in 2.228 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )