Mercurial > hg > orthanc
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 |