1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
## ----------------------------------------------------------------------------
# cil is a Command line Issue List
# Copyright (C) 2008 Andrew Chilton
#
# This file is part of 'cil'.
#
# cil is free software: you can redistribute it and/or modify it under the
# terms of the GNU General Public License as published by the Free Software
# Foundation, either version 3 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program. If not, see <http://www.gnu.org/licenses/>.
#
## ----------------------------------------------------------------------------
package CIL::Attachment;
use strict;
use warnings;
use Carp;
use MIME::Base64;
use base qw(CIL::Base);
# fields specific to Attachment
__PACKAGE__->mk_accessors(qw(Issue Filename Size File));
# all fields
my @FIELDS = ( qw(Issue Filename Size CreatedBy Inserted Updated File) );
## ----------------------------------------------------------------------------
sub new {
my ($proto, $name) = @_;
croak 'please provide an attachment name'
unless defined $name;
my $class = ref $proto || $proto;
my $self = {};
bless $self, $class;
$self->set_name( $name );
$self->{data} = {
Issue => '',
Filename => '',
Size => '',
CreatedBy => '',
Inserted => '',
Updated => '',
File => '',
};
$self->{Changed} = 0;
$self->set_inserted_now;
return $self;
}
sub set_file_contents {
my ($self, $contents) = @_;
# $contents will be binary
$self->{data}{File} = encode_base64( $contents );
}
sub as_binary {
my ($self) = @_;
return decode_base64( $self->{data}{File} );
}
sub prefix {
return 'a';
}
sub fields {
return \@FIELDS;
}
sub array_fields {
return {};
}
sub last_field {
return 'File';
}
## ----------------------------------------------------------------------------
1;
## ----------------------------------------------------------------------------
|