#pragma once #include #include #include #include "application.h" #include "app_config.h" typedef enum { HTTP_API_GET, HTTP_API_POST } http_api_method_t; typedef enum { HTTP_API_ROUTE_INFO, HTTP_API_ROUTE_HEALTH, HTTP_API_ROUTE_JOIN, HTTP_API_ROUTE_RESUME, HTTP_API_ROUTE_CONFIG, HTTP_API_ROUTE_START, HTTP_API_ROUTE_SHOT, HTTP_API_ROUTE_REMATCH, HTTP_API_ROUTE_ABORT, HTTP_API_ROUTE_STATE, } http_api_route_t; typedef struct { uint32_t uptime_ms; uint32_t free_heap_bytes; uint32_t minimum_free_heap_bytes; uint32_t largest_free_block_bytes; uint8_t connected_clients; uint16_t rejected_input; const char *wifi_state; } http_api_health_t; typedef struct { http_api_method_t method; http_api_route_t route; bool content_type_json; bool target_too_large; const char *body; size_t body_length; const char *session_token; } http_api_request_t; typedef struct { uint16_t status; char body[kStateMessageCapacity]; size_t body_length; } http_api_response_t; typedef struct { application_t *application; http_api_health_t health; } http_api_t; void http_api_init(http_api_t *api, application_t *application); void http_api_set_health(http_api_t *api, const http_api_health_t *health); bool http_api_handle(http_api_t *api, const http_api_request_t *request, http_api_response_t *response);