comparison OrthancServer/OrthancRestApi/OrthancRestModalities.cpp @ 3592:de1665e7b341

added '/peers/{id}/system' route to test the connectivity with a remote peer
author Alain Mazy <alain@mazy.be>
date Mon, 23 Dec 2019 15:46:50 +0100
parents 962e5f00744b
children 085283445db0 94f4a18a79cc
comparison
equal deleted inserted replaced
3591:19d88138c30f 3592:de1665e7b341
1102 throw OrthancException(ErrorCode_UnknownResource, 1102 throw OrthancException(ErrorCode_UnknownResource,
1103 "No peer with symbolic name: " + remote); 1103 "No peer with symbolic name: " + remote);
1104 } 1104 }
1105 } 1105 }
1106 1106
1107 static void PeerSystem(RestApiGetCall& call)
1108 {
1109 ServerContext& context = OrthancRestApi::GetContext(call);
1110
1111 std::string remote = call.GetUriComponent("id", "");
1112
1113 OrthancConfiguration::ReaderLock lock;
1114
1115 WebServiceParameters peer;
1116 if (lock.GetConfiguration().LookupOrthancPeer(peer, remote))
1117 {
1118 HttpClient client(peer, "system");
1119 std::string answer;
1120
1121 client.SetMethod(HttpMethod_Get);
1122
1123 if (!client.Apply(answer))
1124 {
1125 LOG(ERROR) << "Unable to get the system info from remote Orthanc peer: " << peer.GetUrl();
1126 call.GetOutput().SignalError(client.GetLastStatus());
1127 return;
1128 }
1129
1130 call.GetOutput().AnswerBuffer(answer, MimeType_Json);
1131 }
1132 else
1133 {
1134 throw OrthancException(ErrorCode_UnknownResource,
1135 "No peer with symbolic name: " + remote);
1136 }
1137 }
1107 1138
1108 // DICOM bridge ------------------------------------------------------------- 1139 // DICOM bridge -------------------------------------------------------------
1109 1140
1110 static bool IsExistingModality(const OrthancRestApi::SetOfStrings& modalities, 1141 static bool IsExistingModality(const OrthancRestApi::SetOfStrings& modalities,
1111 const std::string& id) 1142 const std::string& id)
1307 Register("/peers", ListPeers); 1338 Register("/peers", ListPeers);
1308 Register("/peers/{id}", ListPeerOperations); 1339 Register("/peers/{id}", ListPeerOperations);
1309 Register("/peers/{id}", UpdatePeer); 1340 Register("/peers/{id}", UpdatePeer);
1310 Register("/peers/{id}", DeletePeer); 1341 Register("/peers/{id}", DeletePeer);
1311 Register("/peers/{id}/store", PeerStore); 1342 Register("/peers/{id}/store", PeerStore);
1343 Register("/peers/{id}/system", PeerSystem);
1312 1344
1313 Register("/modalities/{id}/find-worklist", DicomFindWorklist); 1345 Register("/modalities/{id}/find-worklist", DicomFindWorklist);
1314 } 1346 }
1315 } 1347 }