#pragma once #include "http_define.h" #if USE_NET_HTTP_WEBSITE #include #include #include #include "http_header.h" #include "http_interface.h" namespace ylib { namespace network { namespace http { class server; class reqpack; class response :public network::http::interface_ { public: response(network::http::reqpack* reqpack); ~response(); bool send(const char* buf, size_t buf_len, ushort stateNum = 200, const std::string& stateDesc = "OK"); bool send(const ylib::buffer& value, ushort stateNum = 200, const std::string& stateDesc = "OK"); bool send(const std::string& value, ushort stateNum = 200, const std::string& stateDesc = "OK"); bool send(const ylib::json& json, ushort stateNum = 200, const std::string& stateDesc = "OK"); bool send_file(const std::string& filepath, int32 downbaud = -1, ushort stateNum = 200, const std::string& stateDesc = "OK"); std::map* headers(); bool redirect(const std::string& filepath, bool MovedPermanently = false); bool forward(const std::string& filepath); public: ylib::json sjson; private: bool filecache(const uint64& last_modify_time); bool fileoffset(long filesize, long& start, long& len); private: std::map m_headers; bool m_response = false; network::http::reqpack* m_reqpack = nullptr; }; } } } #endif