#ifndef __Response_h__ #define __Response_h__ #include "includes" #include "Object.h" namespace core { /// /// Response /// /// Use this object to build a response output for a protocol that uses headers /// and responses as the main communications protocol. /// class Response : public Object { public: enum Mode { LENGTH, STREAMING }; /// /// The constructor for the object. /// Response(); /// /// The destructor for the object. /// ~Response(); /// /// Returns the response generated from the contained values that /// do not return a content length. Using this constructor ensures /// a zero length Content-Length value. /// /// @return the complete response string to send to client. /// std::string getResponse(Mode mode = LENGTH); /// /// Returns the response plus the content passed as a parameter. /// /// This method will automatically generate the proper Content-Length /// value for the response. /// /// @param content the content that will be provided on the response /// message to the client. /// /// @return the complete response string to send to client. /// std::string getResponse(std::string content, Mode mode = LENGTH); /// /// Sets the protocol value for the response message. The protocol /// should match the header received. /// /// @param protocol the protocol value to return in response. /// void setProtocol(std::string protocol); /// /// Sets the return code value for the response. /// /// @param code the response code value to return in the response. /// void setCode(std::string code); /// /// Sets the return code string value for the response. /// /// @param text the text value for the response code to return on /// the response. /// void setText(std::string text); /// /// Specifies the type of data that will be returned in this response. /// /// @param mimeType the mime type for the data. /// void setMimeType(std::string mimeType); void addHeaderItem(std::string key, std::string value); void setCookie(std::string name, std::string value); private: std::string protocol; std::string code; std::string text; std::string mimeType; std::string CRLF = "\r\n"; std::map header; }; } #endif