From 9f527ed2141e4c7cac9239c3e2d5d9d467c01e47 Mon Sep 17 00:00:00 2001 From: Patrick Kuijvenhoven Date: Sun, 29 Dec 2019 01:04:20 +0100 Subject: [PATCH] Add fields: Attachments.FriendlyContentLength, Transaction.Content, Attachments.* --- lib/RT/Extension/REST2/Resource.pm | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/lib/RT/Extension/REST2/Resource.pm b/lib/RT/Extension/REST2/Resource.pm index b66952e..1c0c5a5 100644 --- a/lib/RT/Extension/REST2/Resource.pm +++ b/lib/RT/Extension/REST2/Resource.pm @@ -79,7 +79,29 @@ sub expand_field { push @{ $result }, values %values if %values; } - + } elsif ($field eq 'FriendlyContentLength' && $item->isa('RT::Attachment') && $item->can('FriendlyContentLength')) { + $result //= $item->FriendlyContentLength(); + } elsif ($field eq 'Content' && $item->isa('RT::Transaction') && $item->can('Content') && $item->can('HasContent') && $item->HasContent()) { + $result //= $item->Content(); + } elsif ($field eq 'Attachments' && $item->isa('RT::Transaction') && $item->can('Attachments')) { + my $param_field = $param_prefix . '[' . $field . ']'; + my @subfields = split( /,/, $self->request->param($param_field) || '' ); + + $result //= []; + + my $attachments = $item->Attachments(); + while(my $obj = $attachments->Next()) { + my $subresult = { + _url => RT::Extension::REST2->base_uri . "/attachment/" . $obj->id, + id => $obj->id, + type => 'attachment', + }; + for my $subfield (@subfields) { + my $subfield_result = $self->expand_field( $obj, $subfield, $param_field ); + $subresult->{$subfield} = $subfield_result if defined $subfield_result; + } + push(@$result, $subresult); + } } elsif ($item->can('_Accessible') && $item->_Accessible($field => 'read')) { # RT::Record derived object, so we can check access permissions.