%# BEGIN LICENSE BLOCK
%# 
%# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com>
%# 
%# (Except where explictly superceded by other copyright notices)
%# 
%# This work is made available to you under the terms of Version 2 of
%# the GNU General Public License. A copy of that license should have
%# been provided with this software, but in any event can be snarfed
%# from www.gnu.org.
%# 
%# This work 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.
%# 
%# Unless otherwise specified, all modifications, corrections or
%# extensions to this work which alter its source code become the
%# property of Best Practical Solutions, LLC when submitted for
%# inclusion in the work.
%# 
%# 
%# END LICENSE BLOCK
%# REST/1.0/Forms/ticket/attachments
%#
<%ARGS>
$id
$args => undef
</%ARGS>
<%perl>
my @data;
my ($c, $o, $k, $e) = ("", [], {}, "");
my $ticket = new RT::Ticket $session{CurrentUser};

$ticket->Load($id);
unless ($ticket->Id) {
    return [ "# Ticket $id does not exist.", [], {}, 1 ];
}
if ($args) {
    unless ($args =~ /^\d+$/) {
        return [ "# Invalid attachment id: $args", [], {}, 1 ];
    }
}

if ($args) {
    my $attachment = new RT::Attachment $session{CurrentUser};
    $attachment->Load($args);
    unless ($attachment->Id eq $args) {
        return [ "# Invalid attachment id: $args", [], {}, 1 ];
    }
    $c = $attachment->Content;
}
else {
    my @attachments;
    my $transactions = $ticket->Transactions;
    while (my $t = $transactions->Next) {
        my $attachments = $t->Attachments;
        while (my $a = $attachments->Next) {
            next unless $a->Filename;
            my $size = length($a->Content);
            if ($size > 1024) { $size  = int($size/102.4)/10 . "k" }
            else              { $size .= "b" }
            push @attachments, $a->Id.": ".$a->Filename." (".$size.")";
        }
    }

    if (@attachments) {
        $o = [ "id", "Attachments" ];
        $k = {
            id => "ticket/".$ticket->Id."/attachments",
            Attachments => \@attachments
        };
    }
}

return [ $c, $o, $k, $e ];
</%perl>
