[rt-devel] [PATCH] Use Content-ID when handling multipart message over REST.

Arkadiusz Miśkiewicz arekm at maven.pl
Fri Feb 20 05:53:56 EST 2015


From: Przemyslaw Plewa <przemyslaw.plewa at domena.pl>

Record Content-ID identifier that came over REST API.

This allows us to have multipart messages with one (or more) part
refering to other parts of message. Content-ID identifier is used for
reference.

Such message also needs multipart/related type (instead of default (in
rt) multipart/mixed. So if we detect Content-ID in any part of multipart
message we switch Content-Type to multipart/related.

Signed-off-by: Przemysław Plewa <przemyslaw.plewa at domena.pl>
---
 lib/RT/Interface/REST.pm | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/lib/RT/Interface/REST.pm b/lib/RT/Interface/REST.pm
index edfc5d3..1c8f555 100644
--- a/lib/RT/Interface/REST.pm
+++ b/lib/RT/Interface/REST.pm
@@ -324,11 +324,17 @@ sub process_attachments {
         }
 
         my $info = $cgi->uploadInfo($fh);
+        # If Content-ID exists for attachment then we need multipart/related
+        # to be able to refer to this Content-Id in core of mime message
+        if($info->{'Content-ID'}) {
+            $entity->head->set('Content-Type', 'multipart/related');
+        }
         my $new_entity = $entity->attach(
             Path => $tmp_fn,
             Type => $info->{'Content-Type'} || guess_media_type($tmp_fn),
             Filename => $file,
             Disposition => $info->{'Content-Disposition'} || "attachment",
+            'Content-ID' => $info->{'Content-ID'},
         );
         $new_entity->bodyhandle->{'_dirty_hack_to_save_a_ref_tmp_fh'} = $tmp_fh;
         $i++;
-- 
2.3.0



More information about the rt-devel mailing list