// // HTTPServerResponse.h // // $Id: //poco/1.3/Net/include/Poco/Net/HTTPServerResponse.h#4 $ // // Library: Net // Package: HTTPServer // Module: HTTPServerResponse // // Definition of the HTTPServerResponse class. // // Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH. // and Contributors. // // Permission is hereby granted, free of charge, to any person or organization // obtaining a copy of the software and accompanying documentation covered by // this license (the "Software") to use, reproduce, display, distribute, // execute, and transmit the Software, and to prepare derivative works of the // Software, and to permit third-parties to whom the Software is furnished to // do so, all subject to the following: // // The copyright notices in the Software and this entire statement, including // the above license grant, this restriction and the following disclaimer, // must be included in all copies of the Software, in whole or in part, and // all derivative works of the Software, unless such copies or derivative // works are solely in the form of machine-executable object code generated by // a source language processor. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. // #ifndef Net_HTTPServerResponse_INCLUDED #define Net_HTTPServerResponse_INCLUDED #include "Poco/Net/Net.h" #include "Poco/Net/HTTPResponse.h" #include #include namespace Poco { namespace Net { class HTTPServerSession; class HTTPCookie; class Net_API HTTPServerResponse: public HTTPResponse /// This subclass of HTTPResponse is used for /// representing server-side HTTP responses. /// /// A HTTPServerResponse is passed to the /// handleRequest() method of HTTPRequestHandler. /// /// handleRequest() must set a status code /// and optional reason phrase, set headers /// as necessary, and provide a message body. { public: HTTPServerResponse(); /// Creates the HTTPServerResponse. ~HTTPServerResponse(); /// Destroys the HTTPServerResponse. virtual void sendContinue() = 0; /// Sends a 100 Continue response to the /// client. virtual std::ostream& send() = 0; /// Sends the response header to the client and /// returns an output stream for sending the /// response body. /// /// The returned stream is valid until the response /// object is destroyed. /// /// Must not be called after sendFile(), sendBuffer() /// or redirect() has been called. virtual void sendFile(const std::string& path, const std::string& mediaType) = 0; /// Sends the response header to the client, followed /// by the content of the given file. /// /// Must not be called after send(), sendBuffer() /// or redirect() has been called. /// /// Throws a FileNotFoundException if the file /// cannot be found, or an OpenFileException if /// the file cannot be opened. virtual void sendBuffer(const void* pBuffer, std::size_t length) = 0; /// Sends the response header to the client, followed /// by the contents of the given buffer. /// /// The Content-Length header of the response is set /// to length and chunked transfer encoding is disabled. /// /// If both the HTTP message header and body (from the /// given buffer) fit into one single network packet, the /// complete response can be sent in one network packet. /// /// Must not be called after send(), sendFile() /// or redirect() has been called. virtual void redirect(const std::string& uri) = 0; /// Sets the status code to 302 (Found) /// and sets the "Location" header field /// to the given URI, which according to /// the HTTP specification, must be absolute. /// /// Must not be called after send() has been called. virtual void requireAuthentication(const std::string& realm) = 0; /// Sets the status code to 401 (Unauthorized) /// and sets the "WWW-Authenticate" header field /// according to the given realm. virtual bool sent() const = 0; /// Returns true if the response (header) has been sent. }; } } // namespace Poco::Net #endif // Net_HTTPServerResponse_INCLUDED