| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- //
- // ApacheServerResponse.h
- //
- // Copyright (c) 2006-2011, Applied Informatics Software Engineering GmbH.
- // and Contributors.
- //
- // SPDX-License-Identifier: BSL-1.0
- //
- #ifndef ApacheConnector_ApacheServerResponse_INCLUDED
- #define ApacheConnector_ApacheServerResponse_INCLUDED
- #include "ApacheConnector.h"
- #include "ApacheStream.h"
- #include "Poco/Net/Net.h"
- #include "Poco/Net/HTTPServerResponse.h"
- class ApacheServerRequest;
- class ApacheServerResponse: public Poco::Net::HTTPServerResponse
- /// This subclass of HTTPResponse is used for
- /// representing server-side HTTP responses for apache.
- ///
- /// A ApacheServerResponse 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:
- ApacheServerResponse(ApacheServerRequest* pRequest);
- /// Creates the ApacheServerResponse.
- ~ApacheServerResponse();
- /// Destroys the ApacheServerResponse.
- void sendContinue();
- /// Sends a 100 Continue response to the
- /// client.
- void sendErrorResponse(int status);
- /// Sends an error response with the given
- /// status back to the client.
- std::ostream& send();
- /// 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.
- void sendFile(const std::string& path, const std::string& mediaType);
- /// 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.
- void sendBuffer(const void* pBuffer, std::size_t length);
- /// 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.
- void redirect(const std::string& uri, Poco::Net::HTTPResponse::HTTPStatus status);
- /// Sets the status code, which must be one of
- /// HTTP_MOVED_PERMANENTLY (301), HTTP_FOUND (302),
- /// or HTTP_SEE_OTHER (303),
- /// 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.
- void requireAuthentication(const std::string& realm);
- /// Sets the status code to 401 (Unauthorized)
- /// and sets the "WWW-Authenticate" header field
- /// according to the given realm.
- bool sent() const;
- /// Returns true if the response (header) has been sent.
- private:
- void initApacheOutputStream();
- /// Initializes the ApacheOutputStram
- ApacheOutputStream* _pStream;
- ApacheRequestRec* _pApacheRequest;
- };
- //
- // inlines
- //
- inline bool ApacheServerResponse::sent() const
- {
- return _pStream != 0;
- }
- #endif // ApacheConnector_ApacheServerResponse_INCLUDED
|