Mercurial > hg > orthanc-transfers
annotate Framework/TransferQuery.cpp @ 77:1e396fb509ca default
updated copyright, as Orthanc Team now replaces Osimis
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 30 May 2024 22:44:10 +0200 |
parents | 5480f176b282 |
children |
rev | line source |
---|---|
0 | 1 /** |
2 * Transfers accelerator plugin for Orthanc | |
77
1e396fb509ca
updated copyright, as Orthanc Team now replaces Osimis
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
56
diff
changeset
|
3 * Copyright (C) 2018-2023 Osimis S.A., Belgium |
1e396fb509ca
updated copyright, as Orthanc Team now replaces Osimis
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
56
diff
changeset
|
4 * Copyright (C) 2024-2024 Orthanc Team SRL, Belgium |
1e396fb509ca
updated copyright, as Orthanc Team now replaces Osimis
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
56
diff
changeset
|
5 * Copyright (C) 2021-2024 Sebastien Jodogne, ICTEAM UCLouvain, Belgium |
0 | 6 * |
7 * This program is free software: you can redistribute it and/or | |
8 * modify it under the terms of the GNU Affero General Public License | |
9 * as published by the Free Software Foundation, either version 3 of | |
10 * the License, or (at your option) any later version. | |
11 * | |
12 * This program is distributed in the hope that it will be useful, but | |
13 * WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
15 * Affero General Public License for more details. | |
16 * | |
17 * You should have received a copy of the GNU Affero General Public License | |
18 * along with this program. If not, see <http://www.gnu.org/licenses/>. | |
19 **/ | |
20 | |
21 | |
22 #include "TransferQuery.h" | |
23 | |
20 | 24 #include <OrthancException.h> |
44
f4e828607f02
Added 'SenderTransferID' option that is added as an HTTP header in outgoing requests in PushMode
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
25 #include "Toolbox.h" |
0 | 26 |
27 | |
28 namespace OrthancPlugins | |
29 { | |
30 TransferQuery::TransferQuery(const Json::Value& body) | |
31 { | |
32 if (body.type() != Json::objectValue || | |
33 !body.isMember(KEY_RESOURCES) || | |
34 !body.isMember(KEY_PEER) || | |
35 !body.isMember(KEY_COMPRESSION) || | |
36 body[KEY_RESOURCES].type() != Json::arrayValue || | |
37 body[KEY_PEER].type() != Json::stringValue || | |
38 body[KEY_COMPRESSION].type() != Json::stringValue) | |
39 { | |
40 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat); | |
41 } | |
42 | |
43 peer_ = body[KEY_PEER].asString(); | |
44 resources_ = body[KEY_RESOURCES]; | |
45 compression_ = StringToBucketCompression(body[KEY_COMPRESSION].asString()); | |
46 | |
47 if (body.isMember(KEY_ORIGINATOR_UUID)) | |
48 { | |
49 if (body[KEY_ORIGINATOR_UUID].type() != Json::stringValue) | |
50 { | |
51 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat); | |
52 } | |
53 else | |
54 { | |
55 hasOriginator_ = true; | |
56 originator_ = body[KEY_ORIGINATOR_UUID].asString(); | |
57 } | |
58 } | |
59 else | |
60 { | |
61 hasOriginator_ = false; | |
62 } | |
63 | |
64 if (body.isMember(KEY_PRIORITY)) | |
65 { | |
66 if (body[KEY_PRIORITY].type() != Json::intValue && | |
67 body[KEY_PRIORITY].type() != Json::uintValue) | |
68 { | |
69 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat); | |
70 } | |
71 else | |
72 { | |
73 priority_ = body[KEY_PRIORITY].asInt(); | |
74 } | |
75 } | |
76 else | |
77 { | |
78 priority_ = 0; | |
79 } | |
44
f4e828607f02
Added 'SenderTransferID' option that is added as an HTTP header in outgoing requests in PushMode
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
80 |
f4e828607f02
Added 'SenderTransferID' option that is added as an HTTP header in outgoing requests in PushMode
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
81 if (body.isMember(KEY_SENDER_TRANSFER_ID)) |
f4e828607f02
Added 'SenderTransferID' option that is added as an HTTP header in outgoing requests in PushMode
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
82 { |
f4e828607f02
Added 'SenderTransferID' option that is added as an HTTP header in outgoing requests in PushMode
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
83 if (body[KEY_SENDER_TRANSFER_ID].type() != Json::stringValue) |
f4e828607f02
Added 'SenderTransferID' option that is added as an HTTP header in outgoing requests in PushMode
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
84 { |
f4e828607f02
Added 'SenderTransferID' option that is added as an HTTP header in outgoing requests in PushMode
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
85 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat, std::string(KEY_SENDER_TRANSFER_ID) + " should be a string"); |
f4e828607f02
Added 'SenderTransferID' option that is added as an HTTP header in outgoing requests in PushMode
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
86 } |
f4e828607f02
Added 'SenderTransferID' option that is added as an HTTP header in outgoing requests in PushMode
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
87 senderTransferId_ = body[KEY_SENDER_TRANSFER_ID].asString(); |
f4e828607f02
Added 'SenderTransferID' option that is added as an HTTP header in outgoing requests in PushMode
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
88 } |
f4e828607f02
Added 'SenderTransferID' option that is added as an HTTP header in outgoing requests in PushMode
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
89 else |
f4e828607f02
Added 'SenderTransferID' option that is added as an HTTP header in outgoing requests in PushMode
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
90 { |
f4e828607f02
Added 'SenderTransferID' option that is added as an HTTP header in outgoing requests in PushMode
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
91 senderTransferId_ = Orthanc::Toolbox::GenerateUuid(); |
f4e828607f02
Added 'SenderTransferID' option that is added as an HTTP header in outgoing requests in PushMode
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
92 } |
f4e828607f02
Added 'SenderTransferID' option that is added as an HTTP header in outgoing requests in PushMode
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
93 |
0 | 94 } |
95 | |
96 | |
97 const std::string& TransferQuery::GetOriginator() const | |
98 { | |
99 if (hasOriginator_) | |
100 { | |
101 return originator_; | |
102 } | |
103 else | |
104 { | |
105 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); | |
106 } | |
107 } | |
108 | |
44
f4e828607f02
Added 'SenderTransferID' option that is added as an HTTP header in outgoing requests in PushMode
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
109 const std::string& TransferQuery::GetSenderTransferID() const |
f4e828607f02
Added 'SenderTransferID' option that is added as an HTTP header in outgoing requests in PushMode
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
110 { |
f4e828607f02
Added 'SenderTransferID' option that is added as an HTTP header in outgoing requests in PushMode
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
111 return senderTransferId_; |
f4e828607f02
Added 'SenderTransferID' option that is added as an HTTP header in outgoing requests in PushMode
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
112 } |
f4e828607f02
Added 'SenderTransferID' option that is added as an HTTP header in outgoing requests in PushMode
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
113 |
f4e828607f02
Added 'SenderTransferID' option that is added as an HTTP header in outgoing requests in PushMode
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
114 void TransferQuery::GetHttpHeaders(std::map<std::string, std::string>& headers) const |
f4e828607f02
Added 'SenderTransferID' option that is added as an HTTP header in outgoing requests in PushMode
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
115 { |
56 | 116 headers["Expect"] = ""; // to avoid HttpClient performance warning |
44
f4e828607f02
Added 'SenderTransferID' option that is added as an HTTP header in outgoing requests in PushMode
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
117 headers[HEADER_KEY_SENDER_TRANSFER_ID] = senderTransferId_; |
f4e828607f02
Added 'SenderTransferID' option that is added as an HTTP header in outgoing requests in PushMode
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
118 } |
0 | 119 |
120 void TransferQuery::Serialize(Json::Value& target) const | |
121 { | |
122 target = Json::objectValue; | |
123 target[KEY_PEER] = peer_; | |
124 target[KEY_RESOURCES] = resources_; | |
125 target[KEY_COMPRESSION] = EnumerationToString(compression_); | |
44
f4e828607f02
Added 'SenderTransferID' option that is added as an HTTP header in outgoing requests in PushMode
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
126 target[KEY_SENDER_TRANSFER_ID] = senderTransferId_; |
f4e828607f02
Added 'SenderTransferID' option that is added as an HTTP header in outgoing requests in PushMode
Alain Mazy <am@osimis.io>
parents:
33
diff
changeset
|
127 |
0 | 128 if (hasOriginator_) |
129 { | |
130 target[KEY_ORIGINATOR_UUID] = originator_; | |
131 } | |
132 } | |
133 } |