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);