#include "pch.hpp" #include #include "cgiAppEngine.h" #include "cgiEnvironment.h" #include "cgiHttpHeader.h" #include "logger.h" namespace CgiApplicationExtras { class FailStage : public CgiApplicationEngine::ResponseStage { public: FailStage(int c, const std::string & m) : ResponseStage(NULL), code(c), message(m) { } CgiApplicationEngine::HttpHeaderPtr getHeader() const { Project2HttpHeader * header = new Project2HttpHeader(boost::lexical_cast(code) + " " + message); return CgiApplicationEngine::HttpHeaderPtr(header); } CgiApplicationEngine::NextStage run() { return CgiApplicationEngine::NextStage(NULL, this, NULL, NULL); } private: const int code; const std::string message; }; class CgiFail : public View { public: CgiFail(ScriptNodePtr e) : SourceObject(e), View(e), code(e, "code", 500), message(e, "message", "Application error") { } void execute(const MultiRowSetPresenter *) const { throw CgiApplicationEngine::ResponseStagePtr( new FailStage(code(), message())); } private: Variable code, message; }; } typedef CgiApplicationExtras::CgiFail cgif; DECLARE_LOADER("cgifail", cgif);