Mercurial > hg > orthanc
diff OrthancServer/OrthancRestApi.cpp @ 484:b8ace6fc1d1f
preparation for handling Orthanc peers
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 16 Jul 2013 12:51:27 +0200 |
parents | 8c3573d28868 |
children | bdbde1fbfab3 |
line wrap: on
line diff
--- a/OrthancServer/OrthancRestApi.cpp Tue Jul 16 12:01:39 2013 +0200 +++ b/OrthancServer/OrthancRestApi.cpp Tue Jul 16 12:51:27 2013 +0200 @@ -52,9 +52,13 @@ ServerContext& context = contextApi.GetContext() #define RETRIEVE_MODALITIES(call) \ - const OrthancRestApi::Modalities& modalities = \ + const OrthancRestApi::SetOfStrings& modalities = \ dynamic_cast<OrthancRestApi&>(call.GetContext()).GetModalities(); +#define RETRIEVE_PEERS(call) \ + const OrthancRestApi::SetOfStrings& peers = \ + dynamic_cast<OrthancRestApi&>(call.GetContext()).GetPeers(); + namespace Orthanc @@ -881,7 +885,7 @@ // DICOM bridge ------------------------------------------------------------- - static bool IsExistingModality(const OrthancRestApi::Modalities& modalities, + static bool IsExistingModality(const OrthancRestApi::SetOfStrings& modalities, const std::string& id) { return modalities.find(id) != modalities.end(); @@ -892,7 +896,7 @@ RETRIEVE_MODALITIES(call); Json::Value result = Json::arrayValue; - for (OrthancRestApi::Modalities::const_iterator + for (OrthancRestApi::SetOfStrings::const_iterator it = modalities.begin(); it != modalities.end(); it++) { result.append(*it); @@ -1610,12 +1614,51 @@ + // Orthanc Peers ------------------------------------------------------------ + + static bool IsExistingPeer(const OrthancRestApi::SetOfStrings& peers, + const std::string& id) + { + return peers.find(id) != peers.end(); + } + + static void ListPeers(RestApi::GetCall& call) + { + RETRIEVE_PEERS(call); + + Json::Value result = Json::arrayValue; + for (OrthancRestApi::SetOfStrings::const_iterator + it = peers.begin(); it != peers.end(); it++) + { + result.append(*it); + } + + call.GetOutput().AnswerJson(result); + } + + static void ListPeerOperations(RestApi::GetCall& call) + { + RETRIEVE_PEERS(call); + + std::string id = call.GetUriComponent("id", ""); + if (IsExistingPeer(peers, id)) + { + Json::Value result = Json::arrayValue; + result.append("store"); + call.GetOutput().AnswerJson(result); + } + } + + + + // Registration of the various REST handlers -------------------------------- OrthancRestApi::OrthancRestApi(ServerContext& context) : context_(context) { GetListOfDicomModalities(modalities_); + GetListOfOrthancPeers(peers_); Register("/", ServeRoot); Register("/system", GetSystemInformation); @@ -1692,6 +1735,9 @@ Register("/modalities/{id}/find", DicomFind); Register("/modalities/{id}/store", DicomStore); + Register("/peers", ListPeers); + Register("/peers/{id}", ListPeerOperations); + Register("/instances/{id}/modify", ModifyInstance); Register("/series/{id}/modify", ModifySeriesInplace); Register("/studies/{id}/modify", ModifyStudyInplace);