7#ifndef CIVETSERVER_HEADER_INCLUDED
8#define CIVETSERVER_HEADER_INCLUDED
17#ifndef CIVETWEB_CXX_API
19#if defined(CIVETWEB_CXX_DLL_EXPORTS)
20#define CIVETWEB_CXX_API __declspec(dllexport)
21#elif defined(CIVETWEB_CXX_DLL_IMPORTS)
22#define CIVETWEB_CXX_API __declspec(dllimport)
24#define CIVETWEB_CXX_API
27#define CIVETWEB_CXX_API __attribute__((visibility("default")))
29#define CIVETWEB_CXX_API
39class CIVETWEB_CXX_API CivetException :
public std::runtime_error
42 CivetException(
const std::string &msg) :
std::runtime_error(msg)
51class CIVETWEB_CXX_API CivetHandler
57 virtual ~CivetHandler()
68 virtual bool handleGet(CivetServer *server,
struct mg_connection *conn);
78 virtual bool handleGet(CivetServer *server,
89 virtual bool handlePost(CivetServer *server,
struct mg_connection *conn);
99 virtual bool handlePost(CivetServer *server,
110 virtual bool handleHead(CivetServer *server,
struct mg_connection *conn);
120 virtual bool handleHead(CivetServer *server,
131 virtual bool handlePut(CivetServer *server,
struct mg_connection *conn);
141 virtual bool handlePut(CivetServer *server,
152 virtual bool handleDelete(CivetServer *server,
struct mg_connection *conn);
162 virtual bool handleDelete(CivetServer *server,
173 virtual bool handleOptions(CivetServer *server,
struct mg_connection *conn);
183 virtual bool handleOptions(CivetServer *server,
194 virtual bool handlePatch(CivetServer *server,
struct mg_connection *conn);
204 virtual bool handlePatch(CivetServer *server,
213class CIVETWEB_CXX_API CivetAuthHandler
219 virtual ~CivetAuthHandler()
238class CIVETWEB_CXX_API CivetWebSocketHandler
244 virtual ~CivetWebSocketHandler()
256 virtual bool handleConnection(CivetServer *server,
266 virtual void handleReadyState(CivetServer *server,
279 virtual bool handleData(CivetServer *server,
291 virtual void handleClose(CivetServer *server,
300struct CIVETWEB_CXX_API CivetCallbacks :
public mg_callbacks {
309class CIVETWEB_CXX_API CivetServer
329 CivetServer(
const char **options,
330 const struct CivetCallbacks *callbacks = 0,
331 const void *UserContext = 0);
332 CivetServer(
const std::vector<std::string> &options,
333 const struct CivetCallbacks *callbacks = 0,
334 const void *UserContext = 0);
339 virtual ~CivetServer();
370 void addHandler(
const std::string &uri, CivetHandler *handler);
373 addHandler(
const std::string &uri, CivetHandler &handler)
375 addHandler(uri, &handler);
390 void addWebSocketHandler(
const std::string &uri,
391 CivetWebSocketHandler *handler);
394 addWebSocketHandler(
const std::string &uri, CivetWebSocketHandler &handler)
396 addWebSocketHandler(uri, &handler);
406 void removeHandler(
const std::string &uri);
415 void removeWebSocketHandler(
const std::string &uri);
428 void addAuthHandler(
const std::string &uri, CivetAuthHandler *handler);
431 addAuthHandler(
const std::string &uri, CivetAuthHandler &handler)
433 addAuthHandler(uri, &handler);
443 void removeAuthHandler(
const std::string &uri);
453 std::vector<int> getListeningPorts();
463 std::vector<struct mg_server_port> getListeningPortsFull();
478 const std::string &cookieName,
479 std::string &cookieValue);
488 const std::string &headerName);
523 size_t occurrence = 0);
540 getParam(
const std::string &data,
543 size_t occurrence = 0)
545 return getParam(data.c_str(), data.length(),
name, dst, occurrence);
563 static bool getParam(
const char *data,
567 size_t occurrence = 0);
592 urlDecode(
const std::string &src,
594 bool is_form_url_encoded =
true)
596 urlDecode(src.c_str(), src.length(), dst, is_form_url_encoded);
610 static void urlDecode(
const char *src,
613 bool is_form_url_encoded =
true);
625 static void urlDecode(
const char *src,
627 bool is_form_url_encoded =
true);
637 urlEncode(
const std::string &src, std::string &dst,
bool append =
false)
639 urlEncode(src.c_str(), src.length(), dst,
append);
650 urlEncode(
const char *src, std::string &dst,
bool append =
false);
660 static void urlEncode(
const char *src,
668 getUserContext()
const
674 class CivetConnection
677 std::vector<char> postData;
681 std::map<const struct mg_connection *, CivetConnection> connections;
685 const void *UserContext;
697 static int requestHandler(
struct mg_connection *conn,
void *cbdata);
699 static int webSocketConnectionHandler(
const struct mg_connection *conn,
701 static void webSocketReadyHandler(
struct mg_connection *conn,
void *cbdata);
707 static void webSocketCloseHandler(
const struct mg_connection *conn,
718 static int authHandler(
struct mg_connection *conn,
void *cbdata);
static int authorize(struct mg_connection *conn, struct mg_file *filep, const char *realm)
CURL_EXTERN int void curl_formget_callback append