Mercurial > hg > orthanc
comparison OrthancServer/OrthancRestApi/OrthancRestModalities.cpp @ 2868:abce036683cd
sharing code within OrthancRestAnonymizeModify
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 08 Oct 2018 17:05:19 +0200 |
parents | 251614c2edac |
children | 6eebc2eb3168 |
comparison
equal
deleted
inserted
replaced
2867:251614c2edac | 2868:abce036683cd |
---|---|
719 | 719 |
720 return true; | 720 return true; |
721 } | 721 } |
722 | 722 |
723 | 723 |
724 static void SubmitJob(RestApiPostCall& call, | |
725 const Json::Value& request, | |
726 SetOfInstancesJob* jobRaw) | |
727 { | |
728 std::auto_ptr<SetOfInstancesJob> job(jobRaw); | |
729 | |
730 if (job.get() == NULL) | |
731 { | |
732 throw OrthancException(ErrorCode_NullPointer); | |
733 } | |
734 | |
735 ServerContext& context = OrthancRestApi::GetContext(call); | |
736 | |
737 bool permissive = Toolbox::GetJsonBooleanField(request, "Permissive", false); | |
738 bool asynchronous = Toolbox::GetJsonBooleanField(request, "Asynchronous", false); | |
739 int priority = Toolbox::GetJsonIntegerField(request, "Priority", 0); | |
740 | |
741 job->SetPermissive(permissive); | |
742 | |
743 Json::Value publicContent; | |
744 | |
745 if (asynchronous) | |
746 { | |
747 // Asynchronous mode: Submit the job, but don't wait for its completion | |
748 std::string id; | |
749 context.GetJobsEngine().GetRegistry().Submit(id, job.release(), priority); | |
750 | |
751 Json::Value v; | |
752 v["ID"] = id; | |
753 call.GetOutput().AnswerJson(v); | |
754 } | |
755 else if (context.GetJobsEngine().GetRegistry().SubmitAndWait | |
756 (publicContent, job.release(), priority)) | |
757 { | |
758 // Synchronous mode: We have submitted and waited for completion | |
759 call.GetOutput().AnswerBuffer("{}", "application/json"); | |
760 } | |
761 else | |
762 { | |
763 call.GetOutput().SignalError(HttpStatus_500_InternalServerError); | |
764 } | |
765 } | |
766 | |
767 | |
768 static void DicomStore(RestApiPostCall& call) | 724 static void DicomStore(RestApiPostCall& call) |
769 { | 725 { |
770 ServerContext& context = OrthancRestApi::GetContext(call); | 726 ServerContext& context = OrthancRestApi::GetContext(call); |
771 | 727 |
772 std::string remote = call.GetUriComponent("id", ""); | 728 std::string remote = call.GetUriComponent("id", ""); |
781 std::string moveOriginatorAET = Toolbox::GetJsonStringField | 737 std::string moveOriginatorAET = Toolbox::GetJsonStringField |
782 (request, "MoveOriginatorAet", context.GetDefaultLocalApplicationEntityTitle()); | 738 (request, "MoveOriginatorAet", context.GetDefaultLocalApplicationEntityTitle()); |
783 int moveOriginatorID = Toolbox::GetJsonIntegerField | 739 int moveOriginatorID = Toolbox::GetJsonIntegerField |
784 (request, "MoveOriginatorID", 0 /* By default, not a C-MOVE */); | 740 (request, "MoveOriginatorID", 0 /* By default, not a C-MOVE */); |
785 | 741 |
786 RemoteModalityParameters p = Configuration::GetModalityUsingSymbolicName(remote); | |
787 | |
788 job->SetDescription("REST API"); | |
789 job->SetLocalAet(localAet); | 742 job->SetLocalAet(localAet); |
790 job->SetRemoteModality(p); | 743 job->SetRemoteModality(Configuration::GetModalityUsingSymbolicName(remote)); |
791 | 744 |
792 if (moveOriginatorID != 0) | 745 if (moveOriginatorID != 0) |
793 { | 746 { |
794 job->SetMoveOriginator(moveOriginatorAET, moveOriginatorID); | 747 job->SetMoveOriginator(moveOriginatorAET, moveOriginatorID); |
795 } | 748 } |
796 | 749 |
797 SubmitJob(call, request, job.release()); | 750 OrthancRestApi::GetApi(call).SubmitCommandsJob |
751 (call, job.release(), true /* synchronous by default */, request); | |
798 } | 752 } |
799 } | 753 } |
800 | 754 |
801 | 755 |
802 /*************************************************************************** | 756 /*************************************************************************** |
923 if (GetInstancesToExport(request, *job, remote, call)) | 877 if (GetInstancesToExport(request, *job, remote, call)) |
924 { | 878 { |
925 WebServiceParameters peer; | 879 WebServiceParameters peer; |
926 if (Configuration::GetOrthancPeer(peer, remote)) | 880 if (Configuration::GetOrthancPeer(peer, remote)) |
927 { | 881 { |
928 job->SetDescription("REST API"); | |
929 job->SetPeer(peer); | 882 job->SetPeer(peer); |
930 SubmitJob(call, request, job.release()); | 883 OrthancRestApi::GetApi(call).SubmitCommandsJob |
884 (call, job.release(), true /* synchronous by default */, request); | |
931 } | 885 } |
932 else | 886 else |
933 { | 887 { |
934 LOG(ERROR) << "No peer with symbolic name: " << remote; | 888 LOG(ERROR) << "No peer with symbolic name: " << remote; |
935 throw OrthancException(ErrorCode_UnknownResource); | 889 throw OrthancException(ErrorCode_UnknownResource); |