Mercurial > hg > orthanc
diff Core/RestApi/RestApiOutput.cpp @ 211:b7aea293b965
list of resources
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 29 Nov 2012 09:56:46 +0100 |
parents | 96b7918a6a18 |
children | c07170f3f4f7 |
line wrap: on
line diff
--- a/Core/RestApi/RestApiOutput.cpp Wed Nov 28 18:03:44 2012 +0100 +++ b/Core/RestApi/RestApiOutput.cpp Thu Nov 29 09:56:46 2012 +0100 @@ -32,6 +32,8 @@ #include "RestApiOutput.h" +#include "../OrthancException.h" + namespace Orthanc { RestApiOutput::RestApiOutput(HttpOutput& output) : @@ -40,7 +42,6 @@ existingResource_ = false; } - RestApiOutput::~RestApiOutput() { if (!existingResource_) @@ -48,15 +49,25 @@ output_.SendHeader(Orthanc_HttpStatus_400_BadRequest); } } + + void RestApiOutput::CheckStatus() + { + if (existingResource_) + { + throw OrthancException(ErrorCode_BadSequenceOfCalls); + } + } void RestApiOutput::AnswerFile(HttpFileSender& sender) { + CheckStatus(); sender.Send(output_); existingResource_ = true; } void RestApiOutput::AnswerJson(const Json::Value& value) { + CheckStatus(); Json::StyledWriter writer; std::string s = writer.write(value); output_.AnswerBufferWithContentType(s, "application/json"); @@ -66,12 +77,14 @@ void RestApiOutput::AnswerBuffer(const std::string& buffer, const std::string& contentType) { + CheckStatus(); output_.AnswerBufferWithContentType(buffer, contentType); existingResource_ = true; } void RestApiOutput::Redirect(const char* path) { + CheckStatus(); output_.Redirect(path); existingResource_ = true; }