comparison 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
comparison
equal deleted inserted replaced
483:8c3573d28868 484:b8ace6fc1d1f
50 OrthancRestApi& contextApi = \ 50 OrthancRestApi& contextApi = \
51 dynamic_cast<OrthancRestApi&>(call.GetContext()); \ 51 dynamic_cast<OrthancRestApi&>(call.GetContext()); \
52 ServerContext& context = contextApi.GetContext() 52 ServerContext& context = contextApi.GetContext()
53 53
54 #define RETRIEVE_MODALITIES(call) \ 54 #define RETRIEVE_MODALITIES(call) \
55 const OrthancRestApi::Modalities& modalities = \ 55 const OrthancRestApi::SetOfStrings& modalities = \
56 dynamic_cast<OrthancRestApi&>(call.GetContext()).GetModalities(); 56 dynamic_cast<OrthancRestApi&>(call.GetContext()).GetModalities();
57
58 #define RETRIEVE_PEERS(call) \
59 const OrthancRestApi::SetOfStrings& peers = \
60 dynamic_cast<OrthancRestApi&>(call.GetContext()).GetPeers();
57 61
58 62
59 63
60 namespace Orthanc 64 namespace Orthanc
61 { 65 {
879 883
880 884
881 885
882 // DICOM bridge ------------------------------------------------------------- 886 // DICOM bridge -------------------------------------------------------------
883 887
884 static bool IsExistingModality(const OrthancRestApi::Modalities& modalities, 888 static bool IsExistingModality(const OrthancRestApi::SetOfStrings& modalities,
885 const std::string& id) 889 const std::string& id)
886 { 890 {
887 return modalities.find(id) != modalities.end(); 891 return modalities.find(id) != modalities.end();
888 } 892 }
889 893
890 static void ListModalities(RestApi::GetCall& call) 894 static void ListModalities(RestApi::GetCall& call)
891 { 895 {
892 RETRIEVE_MODALITIES(call); 896 RETRIEVE_MODALITIES(call);
893 897
894 Json::Value result = Json::arrayValue; 898 Json::Value result = Json::arrayValue;
895 for (OrthancRestApi::Modalities::const_iterator 899 for (OrthancRestApi::SetOfStrings::const_iterator
896 it = modalities.begin(); it != modalities.end(); it++) 900 it = modalities.begin(); it != modalities.end(); it++)
897 { 901 {
898 result.append(*it); 902 result.append(*it);
899 } 903 }
900 904
1608 call.GetOutput().AnswerJson(result); 1612 call.GetOutput().AnswerJson(result);
1609 } 1613 }
1610 1614
1611 1615
1612 1616
1617 // Orthanc Peers ------------------------------------------------------------
1618
1619 static bool IsExistingPeer(const OrthancRestApi::SetOfStrings& peers,
1620 const std::string& id)
1621 {
1622 return peers.find(id) != peers.end();
1623 }
1624
1625 static void ListPeers(RestApi::GetCall& call)
1626 {
1627 RETRIEVE_PEERS(call);
1628
1629 Json::Value result = Json::arrayValue;
1630 for (OrthancRestApi::SetOfStrings::const_iterator
1631 it = peers.begin(); it != peers.end(); it++)
1632 {
1633 result.append(*it);
1634 }
1635
1636 call.GetOutput().AnswerJson(result);
1637 }
1638
1639 static void ListPeerOperations(RestApi::GetCall& call)
1640 {
1641 RETRIEVE_PEERS(call);
1642
1643 std::string id = call.GetUriComponent("id", "");
1644 if (IsExistingPeer(peers, id))
1645 {
1646 Json::Value result = Json::arrayValue;
1647 result.append("store");
1648 call.GetOutput().AnswerJson(result);
1649 }
1650 }
1651
1652
1653
1654
1613 // Registration of the various REST handlers -------------------------------- 1655 // Registration of the various REST handlers --------------------------------
1614 1656
1615 OrthancRestApi::OrthancRestApi(ServerContext& context) : 1657 OrthancRestApi::OrthancRestApi(ServerContext& context) :
1616 context_(context) 1658 context_(context)
1617 { 1659 {
1618 GetListOfDicomModalities(modalities_); 1660 GetListOfDicomModalities(modalities_);
1661 GetListOfOrthancPeers(peers_);
1619 1662
1620 Register("/", ServeRoot); 1663 Register("/", ServeRoot);
1621 Register("/system", GetSystemInformation); 1664 Register("/system", GetSystemInformation);
1622 Register("/statistics", GetStatistics); 1665 Register("/statistics", GetStatistics);
1623 Register("/changes", GetChanges); 1666 Register("/changes", GetChanges);
1690 Register("/modalities/{id}/find-study", DicomFindStudy); 1733 Register("/modalities/{id}/find-study", DicomFindStudy);
1691 Register("/modalities/{id}/find-series", DicomFindSeries); 1734 Register("/modalities/{id}/find-series", DicomFindSeries);
1692 Register("/modalities/{id}/find", DicomFind); 1735 Register("/modalities/{id}/find", DicomFind);
1693 Register("/modalities/{id}/store", DicomStore); 1736 Register("/modalities/{id}/store", DicomStore);
1694 1737
1738 Register("/peers", ListPeers);
1739 Register("/peers/{id}", ListPeerOperations);
1740
1695 Register("/instances/{id}/modify", ModifyInstance); 1741 Register("/instances/{id}/modify", ModifyInstance);
1696 Register("/series/{id}/modify", ModifySeriesInplace); 1742 Register("/series/{id}/modify", ModifySeriesInplace);
1697 Register("/studies/{id}/modify", ModifyStudyInplace); 1743 Register("/studies/{id}/modify", ModifyStudyInplace);
1698 Register("/patients/{id}/modify", ModifyPatientInplace); 1744 Register("/patients/{id}/modify", ModifyPatientInplace);
1699 1745