test_web_server.cpp
Go to the documentation of this file.
5 
6 #include <ros/package.h>
7 #include <signal.h>
8 
9 using namespace async_web_server_cpp;
10 
11 volatile bool should_shutdown = false;
12 void sig_handler(int signo)
13 {
14  should_shutdown = true;
15 }
16 
19  const std::string& body)
20 {
22  connection->write(body);
23 }
24 
27  const char* begin, const char* end)
28 {
30  connection->write(request.path);
31  return true;
32 }
33 
36  const char* begin, const char* end)
37 {
39  for (std::map<std::string, std::string>::const_iterator itr =
40  request.query_params.begin();
41  itr != request.query_params.end(); ++itr)
42  {
43  connection->write(itr->first + "=" + itr->second + "\n");
44  }
45  return true;
46 }
47 
49 {
50 public:
51  WebsocketEchoer(WebsocketConnectionPtr websocket) : websocket_(websocket) {}
52  void operator()(const WebsocketMessage& message)
53  {
54  websocket_->sendMessage(message);
55  }
56 
57 private:
59 };
62 {
63  return WebsocketEchoer(websocket);
64 }
65 
66 int main(int argc, char** argv)
67 {
68  if (signal(SIGINT, sig_handler) == SIG_ERR)
69  {
70  return 1;
71  }
72 
73  HttpRequestHandlerGroup handler_group(
75 
76  handler_group.addHandlerForPath("/response/ok",
78  handler_group.addHandlerForPath("/response/created",
80  handler_group.addHandlerForPath(
81  "/response/accepted", HttpReply::stock_reply(HttpReply::accepted));
82  handler_group.addHandlerForPath(
83  "/response/forbidden", HttpReply::stock_reply(HttpReply::forbidden));
84  handler_group.addHandlerForPath(
85  "/response/not_found", HttpReply::stock_reply(HttpReply::not_found));
86  handler_group.addHandlerForPath(
87  "/response/internal_server_error",
89 
90  handler_group.addHandlerForPath(
91  "/a_static_response",
92  HttpReply::static_reply(HttpReply::ok, "text/example", "A RESPONSE"));
93  handler_group.addHandlerForPath("/http_body_echo",
95  handler_group.addHandlerForPath("/http_path_echo.*", http_path_echo);
96  handler_group.addHandlerForPath("/http_query_echo", http_query_echo);
97 
98  handler_group.addHandlerForPath(
99  "/websocket_echo", WebsocketHttpRequestHandler(websocket_echo));
100 
101  handler_group.addHandlerForPath(
102  "/test_files/.+",
104  HttpReply::ok, "/test_files/",
105  ros::package::getPath("async_web_server_cpp") + "/test", false));
106  handler_group.addHandlerForPath(
107  "/test_files_with_dir/.+",
109  HttpReply::ok, "/test_files_with_dir/",
110  ros::package::getPath("async_web_server_cpp") + "/test", true));
111  handler_group.addHandlerForPath(
112  "/test_file",
113  HttpReply::from_file(HttpReply::ok, "text/html",
114  ros::package::getPath("async_web_server_cpp")
115  + "/test/test.html"));
116 
117  HttpServer server("0.0.0.0", "9849", handler_group, 1);
118 
119  server.run();
120 
121  while (!should_shutdown)
122  {
123  sleep(1);
124  }
125 
126  return (0);
127 }
WebsocketEchoer::websocket_
WebsocketConnectionPtr websocket_
Definition: test_web_server.cpp:58
websocket_echo
WebsocketConnection::MessageHandler websocket_echo(const HttpRequest &request, WebsocketConnectionPtr websocket)
Definition: test_web_server.cpp:61
WebsocketEchoer
Definition: test_web_server.cpp:48
async_web_server_cpp::HttpReply::accepted
@ accepted
Definition: http_reply.hpp:29
http_query_echo
static bool http_query_echo(const async_web_server_cpp::HttpRequest &request, async_web_server_cpp::HttpConnectionPtr connection, const char *begin, const char *end)
Definition: test_web_server.cpp:34
async_web_server_cpp::HttpReply::forbidden
@ forbidden
Definition: http_reply.hpp:37
async_web_server_cpp::HttpRequestHandlerGroup
Definition: http_request_handler.hpp:30
WebsocketEchoer::operator()
void operator()(const WebsocketMessage &message)
Definition: test_web_server.cpp:52
main
int main(int argc, char **argv)
Definition: test_web_server.cpp:66
async_web_server_cpp::HttpServer
Definition: http_server.hpp:26
sig_handler
void sig_handler(int signo)
Definition: test_web_server.cpp:12
websocket_request_handler.hpp
async_web_server_cpp
Definition: http_connection.hpp:14
async_web_server_cpp::HttpReply::stock_reply
static HttpServerRequestHandler stock_reply(status_type status)
Definition: http_reply.cpp:410
should_shutdown
volatile bool should_shutdown
Definition: test_web_server.cpp:11
http_server.hpp
async_web_server_cpp::HttpRequest::path
std::string path
Definition: http_request.hpp:26
async_web_server_cpp::WebsocketConnectionPtr
boost::shared_ptr< WebsocketConnection > WebsocketConnectionPtr
Definition: websocket_connection.hpp:18
async_web_server_cpp::HttpRequest
Definition: http_request.hpp:18
async_web_server_cpp::HttpReply::internal_server_error
@ internal_server_error
Definition: http_reply.hpp:39
async_web_server_cpp::HttpReply::created
@ created
Definition: http_reply.hpp:28
async_web_server_cpp::HttpRequest::query_params
std::map< std::string, std::string > query_params
Definition: http_request.hpp:28
async_web_server_cpp::HttpReply::from_file
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
async_web_server_cpp::HttpConnectionPtr
boost::shared_ptr< HttpConnection > HttpConnectionPtr
Definition: http_connection.hpp:17
async_web_server_cpp::HttpReply::builder
static ReplyBuilder builder(status_type status)
Definition: http_reply.cpp:447
async_web_server_cpp::WebsocketMessage
Definition: websocket_message.hpp:109
async_web_server_cpp::ReplyBuilder::write
void write(HttpConnectionPtr connection)
Definition: http_reply.cpp:475
http_reply.hpp
async_web_server_cpp::HttpServer::run
void run()
Definition: http_server.cpp:30
async_web_server_cpp::HttpRequestHandlerGroup::addHandlerForPath
void addHandlerForPath(const std::string &path_regex, HttpServerRequestHandler handler)
Definition: http_request_handler.cpp:43
async_web_server_cpp::HttpReply::static_reply
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
async_web_server_cpp::WebsocketHttpRequestHandler
Definition: websocket_request_handler.hpp:23
websocket_connection.hpp
async_web_server_cpp::HttpReply::from_filesystem
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
async_web_server_cpp::HttpReply::not_found
@ not_found
Definition: http_reply.hpp:38
async_web_server_cpp::HttpRequestBodyCollector
Definition: http_request_handler.hpp:53
async_web_server_cpp::WebsocketConnection::MessageHandler
boost::function< void(const WebsocketMessage &message)> MessageHandler
Definition: websocket_connection.hpp:34
http_body_echo
static void http_body_echo(const async_web_server_cpp::HttpRequest &request, async_web_server_cpp::HttpConnectionPtr connection, const std::string &body)
Definition: test_web_server.cpp:17
async_web_server_cpp::HttpReply::ok
@ ok
Definition: http_reply.hpp:27
WebsocketEchoer::WebsocketEchoer
WebsocketEchoer(WebsocketConnectionPtr websocket)
Definition: test_web_server.cpp:51
http_path_echo
static bool http_path_echo(const async_web_server_cpp::HttpRequest &request, async_web_server_cpp::HttpConnectionPtr connection, const char *begin, const char *end)
Definition: test_web_server.cpp:25


async_web_server_cpp
Author(s): Mitchell Wills , Russel Toris
autogenerated on Tue Mar 1 2022 23:49:06