http_reply.hpp
Go to the documentation of this file.
1 #ifndef CPP_WEB_SERVER_HTTP_REPLY_HPP
2 #define CPP_WEB_SERVER_HTTP_REPLY_HPP
3 
7 
8 #include <boost/asio.hpp>
9 #include <boost/filesystem.hpp>
10 
11 #include <string>
12 #include <vector>
13 
14 namespace async_web_server_cpp
15 {
16 
17 class ReplyBuilder;
18 
22 struct HttpReply
23 {
25  {
27  ok = 200,
28  created = 201,
29  accepted = 202,
30  no_content = 204,
34  not_modified = 304,
35  bad_request = 400,
36  unauthorized = 401,
37  forbidden = 403,
38  not_found = 404,
41  bad_gateway = 502,
43  } status;
44 
45  static std::vector<boost::asio::const_buffer>
46  to_buffers(const std::vector<HttpHeader>& headers);
47 
52 
57  from_file(HttpReply::status_type status, const std::string& content_type,
58  const std::string& filename,
59  const std::vector<HttpHeader>& additional_headers =
60  std::vector<HttpHeader>());
61 
70  from_filesystem(HttpReply::status_type status, const std::string& path_root,
71  const std::string& filesystem_root, bool list_directories,
72  const std::vector<HttpHeader>& additional_headers =
73  std::vector<HttpHeader>());
74 
79  static_reply(status_type status, const std::string& content_type,
80  const std::string& content,
81  const std::vector<HttpHeader>& additional_headers =
82  std::vector<HttpHeader>());
83 
87  static ReplyBuilder builder(status_type status);
88 };
89 
94 {
95 public:
97 
101  ReplyBuilder& header(const std::string& name, const std::string& value);
102 
106  ReplyBuilder& header(const HttpHeader& header);
107 
111  ReplyBuilder& headers(const std::vector<HttpHeader>& headers);
112 
116  void write(HttpConnectionPtr connection);
117 
118 private:
120  boost::shared_ptr<std::vector<HttpHeader>> headers_;
121 };
122 
127 {
128 public:
130  const std::vector<HttpHeader>& headers,
131  const std::string& content);
132 
133  bool operator()(const HttpRequest&, boost::shared_ptr<HttpConnection>,
134  const char* begin, const char* end);
135 
136 private:
138  const std::string content_string_;
139 };
140 
145 {
146 public:
148  const std::string& filename,
149  const std::vector<HttpHeader>& headers);
150 
151  bool operator()(const HttpRequest&, boost::shared_ptr<HttpConnection>,
152  const char* begin, const char* end);
153 
154 private:
156  std::vector<HttpHeader> headers_;
157  std::string filename_;
158 };
159 
164 {
165 public:
167  const std::string& path_root,
168  const std::string& filesystem_root,
169  bool list_directories,
170  const std::vector<HttpHeader>& headers);
171 
172  bool operator()(const HttpRequest&, boost::shared_ptr<HttpConnection>,
173  const char* begin, const char* end);
174 
175 private:
177  std::vector<HttpHeader> headers_;
178  std::string path_root_;
179  boost::filesystem::path filesystem_root_;
181 };
182 
183 } // namespace async_web_server_cpp
184 
185 #endif
static HttpServerRequestHandler static_reply(status_type status, const std::string &content_type, const std::string &content, const std::vector< HttpHeader > &additional_headers=std::vector< HttpHeader >())
Definition: http_reply.cpp:416
static ReplyBuilder builder(status_type status)
Definition: http_reply.cpp:447
static HttpServerRequestHandler from_file(HttpReply::status_type status, const std::string &content_type, const std::string &filename, const std::vector< HttpHeader > &additional_headers=std::vector< HttpHeader >())
Definition: http_reply.cpp:237
static HttpServerRequestHandler from_filesystem(HttpReply::status_type status, const std::string &path_root, const std::string &filesystem_root, bool list_directories, const std::vector< HttpHeader > &additional_headers=std::vector< HttpHeader >())
Definition: http_reply.cpp:314
enum async_web_server_cpp::HttpReply::status_type status
boost::shared_ptr< HttpConnection > HttpConnectionPtr
boost::shared_ptr< std::vector< HttpHeader > > headers_
Definition: http_reply.hpp:120
HttpReply::status_type status_
Definition: http_reply.hpp:119
boost::function< bool(const HttpRequest &, boost::shared_ptr< HttpConnection >, const char *begin, const char *end)> HttpServerRequestHandler
static HttpServerRequestHandler stock_reply(status_type status)
Definition: http_reply.cpp:410
static std::vector< boost::asio::const_buffer > to_buffers(const std::vector< HttpHeader > &headers)
Definition: http_reply.cpp:220


async_web_server_cpp
Author(s): Mitchell Wills , Russel Toris
autogenerated on Mon Feb 28 2022 21:54:08