add: OPTIONS method support

add: relay tag endpoint
This commit is contained in:
Tobias Reisinger 2020-05-14 01:37:08 +02:00
parent dab106c1f6
commit 420bdeb2aa
6 changed files with 158 additions and 26 deletions
handlers

View file

@ -1,3 +1,4 @@
#include <constants.h>
#include <mongoose.h>
#include <logger.h>
#include <router.h>
@ -13,7 +14,7 @@ handler_connection(struct mg_connection *c, int ev, void *p)
endpoint_t *endpoint = router_find_endpoint(hm->uri.p, hm->uri.len, &hm->method);
if(endpoint && endpoint->func)
if(endpoint)
{
if(endpoint->func)
{
@ -29,7 +30,21 @@ handler_connection(struct mg_connection *c, int ev, void *p)
}
else
{
mg_send_head(c, 501, 0, "Content-Type: text/plain");
if(endpoint->method == HTTP_METHOD_OPTIONS)
{
char options_header[256]; // TODO make more generic
sprintf(options_header, "Allow: OPTIONS%s%s%s%s\r\n" STANDARD_HEADERS,
endpoint->options & HTTP_METHOD_GET ? ", GET" : "",
endpoint->options & HTTP_METHOD_POST ? ", POST" : "",
endpoint->options & HTTP_METHOD_PUT ? ", PUT" : "",
endpoint->options & HTTP_METHOD_DELETE ? ", DELETE" : ""
);
mg_send_head(c, 204, 0, options_header);
}
else
{
mg_send_head(c, 501, 0, "Content-Type: text/plain");
}
}
}
else