From 7cc08e67fc0ab33466d8ef4fe6150d19eadfebd4 Mon Sep 17 00:00:00 2001 From: Jordan Bancino Date: Sun, 28 Aug 2022 15:55:48 -0400 Subject: [PATCH] Begin Matrix-specific work. --- src/Matrix.c | 69 ++++++++++++++++++++++++++++++++++++++++++++ src/include/Matrix.h | 38 ++++++++++++++++++++++++ 2 files changed, 107 insertions(+) create mode 100644 src/Matrix.c create mode 100644 src/include/Matrix.h diff --git a/src/Matrix.c b/src/Matrix.c new file mode 100644 index 0000000..878e95f --- /dev/null +++ b/src/Matrix.c @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2022 Jordan Bancino <@jordan:bancino.net> + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include + +#include + +void +MatrixHttpHandler(HttpServerContext * context, void *argp) +{ + MatrixHttpHandlerArgs *args = (MatrixHttpHandlerArgs *) argp; + + LogConfig *lc = args->lc; + + HashMap *requestHeaders = HttpRequestHeaders(context); + FILE *stream; + + char *key; + char *val; + + Log(lc, LOG_MESSAGE, "%s %s", + HttpRequestMethodToString(HttpRequestMethodGet(context)), + HttpRequestPath(context)); + + + LogConfigIndent(lc); + Log(lc, LOG_DEBUG, "Request headers:"); + + LogConfigIndent(lc); + while (HashMapIterate(requestHeaders, &key, (void **) &val)) + { + Log(lc, LOG_DEBUG, "%s: %s", key, val); + } + LogConfigUnindent(lc); + + + HttpResponseStatus(context, HTTP_OK); + HttpResponseHeader(context, "Server", "Telodendria v" TELODENDRIA_VERSION); + HttpResponseHeader(context, "Content-Type", "application/json"); + + HttpSendHeaders(context); + + stream = HttpStream(context); + fprintf(stream, "{}\n"); + fclose(stream); + + LogConfigUnindent(lc); +} diff --git a/src/include/Matrix.h b/src/include/Matrix.h new file mode 100644 index 0000000..f7a029a --- /dev/null +++ b/src/include/Matrix.h @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2022 Jordan Bancino <@jordan:bancino.net> + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef TELODENDRIA_MATRIX_H +#define TELODENDRIA_MATRIX_H + +#include +#include + +typedef struct MatrixHttpHandlerArgs +{ + LogConfig *lc; +} MatrixHttpHandlerArgs; + +extern void + MatrixHttpHandler(HttpServerContext *, void *); + +#endif