Mercurial > hg > orthanc
diff Core/RestApi/RestApiOutput.cpp @ 216:e5d5d4a9a326
refactored upload of dicom through http
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 29 Nov 2012 11:57:35 +0100 |
parents | c07170f3f4f7 |
children | 78a8eaa5f30b |
line wrap: on
line diff
--- a/Core/RestApi/RestApiOutput.cpp Thu Nov 29 11:25:29 2012 +0100 +++ b/Core/RestApi/RestApiOutput.cpp Thu Nov 29 11:57:35 2012 +0100 @@ -39,12 +39,12 @@ RestApiOutput::RestApiOutput(HttpOutput& output) : output_(output) { - existingResource_ = false; + alreadySent_ = false; } RestApiOutput::~RestApiOutput() { - if (!existingResource_) + if (!alreadySent_) { output_.SendHeader(Orthanc_HttpStatus_400_BadRequest); } @@ -52,7 +52,7 @@ void RestApiOutput::CheckStatus() { - if (existingResource_) + if (alreadySent_) { throw OrthancException(ErrorCode_BadSequenceOfCalls); } @@ -62,7 +62,7 @@ { CheckStatus(); sender.Send(output_); - existingResource_ = true; + alreadySent_ = true; } void RestApiOutput::AnswerJson(const Json::Value& value) @@ -71,7 +71,7 @@ Json::StyledWriter writer; std::string s = writer.write(value); output_.AnswerBufferWithContentType(s, "application/json"); - existingResource_ = true; + alreadySent_ = true; } void RestApiOutput::AnswerBuffer(const std::string& buffer, @@ -79,13 +79,25 @@ { CheckStatus(); output_.AnswerBufferWithContentType(buffer, contentType); - existingResource_ = true; + alreadySent_ = true; } void RestApiOutput::Redirect(const std::string& path) { CheckStatus(); output_.Redirect(path); - existingResource_ = true; + alreadySent_ = true; + } + + void RestApiOutput::SignalError(Orthanc_HttpStatus status) + { + if (status != Orthanc_HttpStatus_415_UnsupportedMediaType) + { + throw OrthancException("This HTTP status is not allowed in a REST API"); + } + + CheckStatus(); + output_.SendHeader(status); + alreadySent_ = true; } }