Add ability to enumerate endpoints

This commit is contained in:
Deomid "rojer" Ryabkov 2021-04-26 00:25:45 +01:00 committed by Deomid Ryabkov
parent a350208f35
commit e3a140c9a7
4 changed files with 56 additions and 26 deletions

View File

@ -5752,19 +5752,6 @@ struct mg_http_proto_data_chuncked {
int64_t body_len; /* How many bytes of chunked body was reassembled. */ int64_t body_len; /* How many bytes of chunked body was reassembled. */
}; };
struct mg_http_endpoint {
struct mg_http_endpoint *next;
struct mg_str uri_pattern; /* owned */
char *auth_domain; /* owned */
char *auth_file; /* owned */
enum mg_auth_algo auth_algo;
mg_event_handler_t handler;
#if MG_ENABLE_CALLBACK_USERDATA
void *user_data;
#endif
};
enum mg_http_multipart_stream_state { enum mg_http_multipart_stream_state {
MPS_BEGIN, MPS_BEGIN,
MPS_WAITING_FOR_BOUNDARY, MPS_WAITING_FOR_BOUNDARY,
@ -5869,6 +5856,13 @@ static void mg_http_free_proto_data_file(struct mg_http_proto_data_file *d) {
} }
#endif #endif
struct mg_http_endpoint *mg_get_http_endpoints(struct mg_connection *nc) {
if (nc == NULL) return NULL;
struct mg_http_proto_data *pd = (struct mg_http_proto_data *) nc->proto_data;
if (pd == NULL) return NULL;
return pd->endpoints;
}
static void mg_http_free_proto_data_endpoints(struct mg_http_endpoint **ep) { static void mg_http_free_proto_data_endpoints(struct mg_http_endpoint **ep) {
struct mg_http_endpoint *current = *ep; struct mg_http_endpoint *current = *ep;

View File

@ -5184,6 +5184,27 @@ void mg_register_http_endpoint_opt(struct mg_connection *nc,
mg_event_handler_t handler, mg_event_handler_t handler,
struct mg_http_endpoint_opts opts); struct mg_http_endpoint_opts opts);
/*
* HTTP endpoint descriptor.
*/
struct mg_http_endpoint {
struct mg_http_endpoint *next;
struct mg_str uri_pattern; /* owned */
char *auth_domain; /* owned */
char *auth_file; /* owned */
enum mg_auth_algo auth_algo;
mg_event_handler_t handler;
#if MG_ENABLE_CALLBACK_USERDATA
void *user_data;
#endif
};
/*
* Returns first registered endpoint.
*/
struct mg_http_endpoint *mg_get_http_endpoints(struct mg_connection *nc);
/* /*
* Sends 401 Unauthorized response. * Sends 401 Unauthorized response.
*/ */

View File

@ -107,19 +107,6 @@ struct mg_http_proto_data_chuncked {
int64_t body_len; /* How many bytes of chunked body was reassembled. */ int64_t body_len; /* How many bytes of chunked body was reassembled. */
}; };
struct mg_http_endpoint {
struct mg_http_endpoint *next;
struct mg_str uri_pattern; /* owned */
char *auth_domain; /* owned */
char *auth_file; /* owned */
enum mg_auth_algo auth_algo;
mg_event_handler_t handler;
#if MG_ENABLE_CALLBACK_USERDATA
void *user_data;
#endif
};
enum mg_http_multipart_stream_state { enum mg_http_multipart_stream_state {
MPS_BEGIN, MPS_BEGIN,
MPS_WAITING_FOR_BOUNDARY, MPS_WAITING_FOR_BOUNDARY,
@ -224,6 +211,13 @@ static void mg_http_free_proto_data_file(struct mg_http_proto_data_file *d) {
} }
#endif #endif
struct mg_http_endpoint *mg_get_http_endpoints(struct mg_connection *nc) {
if (nc == NULL) return NULL;
struct mg_http_proto_data *pd = (struct mg_http_proto_data *) nc->proto_data;
if (pd == NULL) return NULL;
return pd->endpoints;
}
static void mg_http_free_proto_data_endpoints(struct mg_http_endpoint **ep) { static void mg_http_free_proto_data_endpoints(struct mg_http_endpoint **ep) {
struct mg_http_endpoint *current = *ep; struct mg_http_endpoint *current = *ep;

View File

@ -447,6 +447,27 @@ void mg_register_http_endpoint_opt(struct mg_connection *nc,
mg_event_handler_t handler, mg_event_handler_t handler,
struct mg_http_endpoint_opts opts); struct mg_http_endpoint_opts opts);
/*
* HTTP endpoint descriptor.
*/
struct mg_http_endpoint {
struct mg_http_endpoint *next;
struct mg_str uri_pattern; /* owned */
char *auth_domain; /* owned */
char *auth_file; /* owned */
enum mg_auth_algo auth_algo;
mg_event_handler_t handler;
#if MG_ENABLE_CALLBACK_USERDATA
void *user_data;
#endif
};
/*
* Returns first registered endpoint.
*/
struct mg_http_endpoint *mg_get_http_endpoints(struct mg_connection *nc);
/* /*
* Sends 401 Unauthorized response. * Sends 401 Unauthorized response.
*/ */