Mercurial > hg > orthanc
diff OrthancServer/DicomInstanceOrigin.cpp @ 2664:a21b244efb37 jobs
serialization of DicomModalityStoreJob, OrthancPeerStoreJob and ResourceModificationJob
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 07 Jun 2018 21:37:40 +0200 |
parents | c691fcf66071 |
children | 46061a91c88a |
line wrap: on
line diff
--- a/OrthancServer/DicomInstanceOrigin.cpp Thu Jun 07 18:18:02 2018 +0200 +++ b/OrthancServer/DicomInstanceOrigin.cpp Thu Jun 07 21:37:40 2018 +0200 @@ -35,6 +35,7 @@ #include "DicomInstanceOrigin.h" #include "../Core/OrthancException.h" +#include "../Core/SerializationToolbox.h" namespace Orthanc @@ -81,46 +82,40 @@ } - void DicomInstanceOrigin::SetDicomProtocolOrigin(const char* remoteIp, - const char* remoteAet, - const char* calledAet) + DicomInstanceOrigin DicomInstanceOrigin::FromDicomProtocol(const char* remoteIp, + const char* remoteAet, + const char* calledAet) { - origin_ = RequestOrigin_DicomProtocol; - remoteIp_ = remoteIp; - dicomRemoteAet_ = remoteAet; - dicomCalledAet_ = calledAet; + DicomInstanceOrigin result(RequestOrigin_DicomProtocol); + result.remoteIp_ = remoteIp; + result.dicomRemoteAet_ = remoteAet; + result.dicomCalledAet_ = calledAet; + return result; } - void DicomInstanceOrigin::SetRestOrigin(const RestApiCall& call) + DicomInstanceOrigin DicomInstanceOrigin::FromRest(const RestApiCall& call) { - origin_ = call.GetRequestOrigin(); + DicomInstanceOrigin result(call.GetRequestOrigin()); - if (origin_ == RequestOrigin_RestApi) + if (result.origin_ == RequestOrigin_RestApi) { - remoteIp_ = call.GetRemoteIp(); - httpUsername_ = call.GetUsername(); + result.remoteIp_ = call.GetRemoteIp(); + result.httpUsername_ = call.GetUsername(); } + + return result; } - void DicomInstanceOrigin::SetHttpOrigin(const char* remoteIp, - const char* username) + DicomInstanceOrigin DicomInstanceOrigin::FromHttp(const char* remoteIp, + const char* username) { - origin_ = RequestOrigin_RestApi; - remoteIp_ = remoteIp; - httpUsername_ = username; + DicomInstanceOrigin result(RequestOrigin_RestApi); + result.remoteIp_ = remoteIp; + result.httpUsername_ = username; + return result; } - void DicomInstanceOrigin::SetLuaOrigin() - { - origin_ = RequestOrigin_Lua; - } - - void DicomInstanceOrigin::SetPluginsOrigin() - { - origin_ = RequestOrigin_Plugins; - } - - const char* DicomInstanceOrigin::GetRemoteAet() const + const char* DicomInstanceOrigin::GetRemoteAetC() const { if (origin_ == RequestOrigin_DicomProtocol) { @@ -131,4 +126,70 @@ return ""; } } + + const std::string& DicomInstanceOrigin::GetRemoteIp() const + { + if (origin_ == RequestOrigin_DicomProtocol || + origin_ == RequestOrigin_RestApi) + { + return remoteIp_; + } + else + { + throw OrthancException(ErrorCode_ParameterOutOfRange); + } + } + + const std::string& DicomInstanceOrigin::GetCalledAet() const + { + if (origin_ == RequestOrigin_DicomProtocol) + { + return dicomCalledAet_; + } + else + { + throw OrthancException(ErrorCode_ParameterOutOfRange); + } + } + + const std::string& DicomInstanceOrigin::GetHttpUsername() const + { + if (origin_ == RequestOrigin_RestApi) + { + return httpUsername_; + } + else + { + throw OrthancException(ErrorCode_ParameterOutOfRange); + } + } + + + + static const char* ORIGIN = "Origin"; + static const char* REMOTE_IP = "RemoteIP"; + static const char* DICOM_REMOTE_AET = "RemoteAET"; + static const char* DICOM_CALLED_AET = "CalledAET"; + static const char* HTTP_USERNAME = "Username"; + + + DicomInstanceOrigin::DicomInstanceOrigin(const Json::Value& serialized) + { + origin_ = StringToRequestOrigin(SerializationToolbox::ReadString(serialized, ORIGIN)); + remoteIp_ = SerializationToolbox::ReadString(serialized, REMOTE_IP); + dicomRemoteAet_ = SerializationToolbox::ReadString(serialized, DICOM_REMOTE_AET); + dicomCalledAet_ = SerializationToolbox::ReadString(serialized, DICOM_CALLED_AET); + httpUsername_ = SerializationToolbox::ReadString(serialized, HTTP_USERNAME); + } + + + void DicomInstanceOrigin::Serialize(Json::Value& result) const + { + result = Json::objectValue; + result[ORIGIN] = EnumerationToString(origin_); + result[REMOTE_IP] = remoteIp_; + result[DICOM_REMOTE_AET] = dicomRemoteAet_; + result[DICOM_CALLED_AET] = dicomCalledAet_; + result[HTTP_USERNAME] = httpUsername_; + } }