diff Framework/TransferQuery.cpp @ 44:f4e828607f02

Added 'SenderTransferID' option that is added as an HTTP header in outgoing requests in PushMode
author Alain Mazy <am@osimis.io>
date Wed, 19 Oct 2022 21:12:57 +0200
parents 44a0430d7899
children 5480f176b282
line wrap: on
line diff
--- a/Framework/TransferQuery.cpp	Tue Jul 12 17:49:40 2022 +0200
+++ b/Framework/TransferQuery.cpp	Wed Oct 19 21:12:57 2022 +0200
@@ -20,6 +20,7 @@
 #include "TransferQuery.h"
 
 #include <OrthancException.h>
+#include "Toolbox.h"
 
 
 namespace OrthancPlugins
@@ -74,6 +75,20 @@
     {
       priority_ = 0;
     }
+
+    if (body.isMember(KEY_SENDER_TRANSFER_ID))
+    {
+      if (body[KEY_SENDER_TRANSFER_ID].type() != Json::stringValue)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat, std::string(KEY_SENDER_TRANSFER_ID) + " should be a string");
+      }
+      senderTransferId_ = body[KEY_SENDER_TRANSFER_ID].asString();
+    }
+    else
+    {
+      senderTransferId_ = Orthanc::Toolbox::GenerateUuid();
+    }
+    
   }
 
 
@@ -89,6 +104,15 @@
     }
   }
 
+  const std::string& TransferQuery::GetSenderTransferID() const
+  {
+    return senderTransferId_;
+  }
+
+  void TransferQuery::GetHttpHeaders(std::map<std::string, std::string>& headers) const
+  {
+    headers[HEADER_KEY_SENDER_TRANSFER_ID] = senderTransferId_;
+  }
 
   void TransferQuery::Serialize(Json::Value& target) const
   {
@@ -96,7 +120,8 @@
     target[KEY_PEER] = peer_;
     target[KEY_RESOURCES] = resources_;
     target[KEY_COMPRESSION] = EnumerationToString(compression_);
-      
+    target[KEY_SENDER_TRANSFER_ID] = senderTransferId_;
+
     if (hasOriginator_)
     {
       target[KEY_ORIGINATOR_UUID] = originator_;