10 #include "httpserverconnection.h"
20 double start()
override;
22 std::string headers(
const std::string &code) {
23 return "HTTP/1.1 " + code +
"\r\n" + fixed_response_headers;
37 std::string
setCookie(
const std::string &name,
const std::string &val,
38 long expiry = 0,
const std::string &path =
"/",
39 std::string domain =
"")
const;
47 const std::string &) {
48 return HttpState::CLOSE;
63 throw std::logic_error(
"sendResponseData not implemented");
67 const std::string &uri);
74 const char *buffer,
size_t len);
79 const char *buffer,
size_t len);
86 const std::string &uri);
93 const std::string &uri);
97 const std::string & ) {
98 return HttpState::CLOSE;
102 log() <<
"new connection id=" << conn->
id();
106 log() <<
"dropped connection " << conn->
id();
114 fixed_response_headers =
"Server: " + server_name +
"\r\n" + hdr;
122 const std::string &domain);
124 std::string webRoot()
const {
128 void setWebRoot(
const std::string &path) {
139 std::string server_name, fixed_response_headers;
HTTP/1.1 server protocol.
Definition: httpserverconnection.h:28
Common API for HTTP server and client tasks.
Definition: httptask.h:12
std::ostream & log() const
Write a line of info log.
Definition: logger.h:328
Listen on a single socket for incoming connections.
Definition: serversocket.h:15
This class implements low-level socket connection operations. Inherit from it to implement protocols ...
Definition: socketconnection.h:47
Pass sockets and messages between processes.
Definition: socketreceiver.h:21
int id() const
Return unique connection ID if connected.
Definition: socket.h:79
Read configuration from file or string.
Definition: taskconfig.h:44
API for HTTP servers.
Definition: webservertask.h:16
virtual void wsHandshakeFinished(HttpServerConnection *conn, const std::string &uri)
Definition: webservertask.cpp:79
virtual HttpState preflightRequest(HttpServerConnection *, const std::string &)
Override this to implement a response to a preflight (OPTIONS) request.
Definition: webservertask.h:96
void connAdded(SocketConnection *conn) override
Definition: webservertask.h:101
void connRemoved(SocketConnection *conn) override
Definition: webservertask.h:105
std::string setCookie(const std::string &name, const std::string &val, long expiry=0, const std::string &path="/", std::string domain="") const
Return a string that may be inserted into the HTTP response headers.
Definition: webservertask.cpp:25
SocketConnection * newClient(int fd, const char *ip, uint16_t port, ServerSocket *) final
Definition: webservertask.cpp:52
virtual HttpState lastPostData(HttpServerConnection *conn, const char *buffer, size_t len)
Retrieve last part of a post message from client.
Definition: webservertask.cpp:68
virtual bool newWsRequest(HttpServerConnection *conn, const std::string &uri)
Request from client for a websocket upgrade.
Definition: webservertask.cpp:73
virtual bool partialPostData(HttpServerConnection *conn, const char *buffer, size_t len)
Retrieve part of a post message from client.
Definition: webservertask.cpp:63
virtual size_t sendResponseData(HttpServerConnection *, size_t)
Definition: webservertask.h:56
double start() override
Definition: webservertask.cpp:18
virtual HttpState newGetRequest(HttpServerConnection *, const std::string &)
Definition: webservertask.h:46
void newWorkerChannel(SocketReceiver *srv, unsigned int chan) override
Definition: webservertask.cpp:108
void setFixedHeaders(const std::string &hdr)
One or more HTTP response header lines that always should be sent.
Definition: webservertask.h:113
static std::string corsHeader(HttpServerConnection *conn, const std::string &domain)
Definition: webservertask.cpp:86