comparison 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
comparison
equal deleted inserted replaced
43:c3fefbb11321 44:f4e828607f02
18 18
19 19
20 #include "TransferQuery.h" 20 #include "TransferQuery.h"
21 21
22 #include <OrthancException.h> 22 #include <OrthancException.h>
23 #include "Toolbox.h"
23 24
24 25
25 namespace OrthancPlugins 26 namespace OrthancPlugins
26 { 27 {
27 TransferQuery::TransferQuery(const Json::Value& body) 28 TransferQuery::TransferQuery(const Json::Value& body)
72 } 73 }
73 else 74 else
74 { 75 {
75 priority_ = 0; 76 priority_ = 0;
76 } 77 }
78
79 if (body.isMember(KEY_SENDER_TRANSFER_ID))
80 {
81 if (body[KEY_SENDER_TRANSFER_ID].type() != Json::stringValue)
82 {
83 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat, std::string(KEY_SENDER_TRANSFER_ID) + " should be a string");
84 }
85 senderTransferId_ = body[KEY_SENDER_TRANSFER_ID].asString();
86 }
87 else
88 {
89 senderTransferId_ = Orthanc::Toolbox::GenerateUuid();
90 }
91
77 } 92 }
78 93
79 94
80 const std::string& TransferQuery::GetOriginator() const 95 const std::string& TransferQuery::GetOriginator() const
81 { 96 {
87 { 102 {
88 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); 103 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
89 } 104 }
90 } 105 }
91 106
107 const std::string& TransferQuery::GetSenderTransferID() const
108 {
109 return senderTransferId_;
110 }
111
112 void TransferQuery::GetHttpHeaders(std::map<std::string, std::string>& headers) const
113 {
114 headers[HEADER_KEY_SENDER_TRANSFER_ID] = senderTransferId_;
115 }
92 116
93 void TransferQuery::Serialize(Json::Value& target) const 117 void TransferQuery::Serialize(Json::Value& target) const
94 { 118 {
95 target = Json::objectValue; 119 target = Json::objectValue;
96 target[KEY_PEER] = peer_; 120 target[KEY_PEER] = peer_;
97 target[KEY_RESOURCES] = resources_; 121 target[KEY_RESOURCES] = resources_;
98 target[KEY_COMPRESSION] = EnumerationToString(compression_); 122 target[KEY_COMPRESSION] = EnumerationToString(compression_);
99 123 target[KEY_SENDER_TRANSFER_ID] = senderTransferId_;
124
100 if (hasOriginator_) 125 if (hasOriginator_)
101 { 126 {
102 target[KEY_ORIGINATOR_UUID] = originator_; 127 target[KEY_ORIGINATOR_UUID] = originator_;
103 } 128 }
104 } 129 }