From 20041dd48358c323dffbf63a203986cd1c5f44c3 Mon Sep 17 00:00:00 2001 From: Fabian Schlenz Date: Tue, 19 Nov 2019 20:48:11 +0100 Subject: [PATCH] Extended http_server to provide new endpoints: /_mapping.txt, /player.json, /playlist_manager.json, /controller.json and /position.json to get the matching data as well as /cmd to send commands to. --- src/controller.cpp | 2 ++ src/http_server.cpp | 11 +++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/controller.cpp b/src/controller.cpp index c6cd7d7..1326620 100644 --- a/src/controller.cpp +++ b/src/controller.cpp @@ -360,6 +360,8 @@ String Controller::json() { JsonObject rfid = json.createNestedObject("last_rfid"); rfid["uid"] = _last_rfid_uid; rfid["data"] = _last_rfid_data; + json["uptime"] = millis() / 1000; + json["free_heap"] = ESP.getFreeHeap(); return json.as(); } diff --git a/src/http_server.cpp b/src/http_server.cpp index e9428bc..154b721 100644 --- a/src/http_server.cpp +++ b/src/http_server.cpp @@ -10,8 +10,15 @@ HTTPServer::HTTPServer(Player* p, Controller* c) { ws = new AsyncWebSocket("/ws"); _server->addHandler(ws); ws->onEvent([&](AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventType type, void * arg, uint8_t *data, size_t len){this->_onEvent(server, client, type, arg, data, len);}); - _server->on("/", [&](AsyncWebServerRequest* req) {req->send(SPIFFS, "/index.html", "text/html");}); + + _server->on("/", HTTP_GET, [&](AsyncWebServerRequest* req) {req->send(SPIFFS, "/index.html", "text/html");}); _server->on("/upload", HTTP_POST, [](AsyncWebServerRequest* req) {req->send(200); }, ([&](AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final){this->_handle_upload(request, filename, index, data, len, final);})); + _server->on("/_mapping.txt", HTTP_GET, [&](AsyncWebServerRequest* req) {req->send(200, "text/plain", _controller->pm->create_mapping_txt());}); + _server->on("/player.json", HTTP_GET, [&](AsyncWebServerRequest* req) {req->send(200, "application/json", _controller->player->json());}); + _server->on("/playlist_manager.json", HTTP_GET, [&](AsyncWebServerRequest* req) {req->send(200, "application/json", _controller->pm->json());}); + _server->on("/controller.json", HTTP_GET, [&](AsyncWebServerRequest* req) {req->send(200, "application/json", _controller->json());}); + _server->on("/position.json", HTTP_GET, [&](AsyncWebServerRequest* req) {req->send(200, "application/json", _controller->player->position_json());}); + _server->on("/cmd", HTTP_POST, [&](AsyncWebServerRequest *req) {req->send(200); }, NULL, [&](AsyncWebServerRequest *request, uint8_t *data, size_t len, size_t index, size_t total) {_controller->queue_command((char*)data);}); _server->begin(); MDNS.addService("http", "tcp", 80); } @@ -133,4 +140,4 @@ void HTTPServer::_onEvent(AsyncWebSocket * server, AsyncWebSocketClient * client _controller->queue_command((char*)data); } } -} \ No newline at end of file +}