/* * This Source Code Form is subject to the terms of the Mozilla Public License, * v. 2.0. If a copy of the MPL was not distributed with this file, You can * obtain one at https://mozilla.org/MPL/2.0/. */ #include #include #include #include #include #include LOG_MODULE_REGISTER(http); static const uint8_t index_html_gz[] = { #include "index.html.gz.inc" }; struct http_resource_detail_static index_resource_detail = { .common = { .type = HTTP_RESOURCE_TYPE_STATIC, .bitmask_of_supported_http_methods = BIT(HTTP_GET), .content_encoding = "gzip", .content_type = "text/html", }, .static_data = index_html_gz, .static_data_len = sizeof(index_html_gz), }; static int favicon_handler( struct http_client_ctx *client, enum http_data_status status, const struct http_request_ctx *request_ctx, struct http_response_ctx *response_ctx, void *user_data ) { LOG_DBG("Handling favicon request"); response_ctx->body = NULL; response_ctx->body_len = 0; response_ctx->final_chunk = true; response_ctx->status = HTTP_204_NO_CONTENT; LOG_DBG("Favicon request handled"); return 0; } static struct http_resource_detail_dynamic favicon_resource_detail = { .common = { .type = HTTP_RESOURCE_TYPE_DYNAMIC, .bitmask_of_supported_http_methods = BIT(HTTP_GET), }, .cb = favicon_handler, .user_data = NULL, }; static uint16_t http_port = 80; HTTP_SERVICE_DEFINE(http_service, NULL, &http_port, 1, 10, NULL, NULL); HTTP_RESOURCE_DEFINE(index_resource, http_service, "/", &index_resource_detail); HTTP_RESOURCE_DEFINE(favicon_resource, http_service, "/favicon.ico", &favicon_resource_detail); int init_http_server(void) { LOG_DBG("Starting HTTP server"); int ret = http_server_start(); if (ret < 0) { LOG_ERR("Failed to start HTTP server (%d)", ret); return ret; } LOG_INF("HTTP server was started"); return 0; } SYS_INIT(init_http_server, APPLICATION, 99);