Make /api/files/... to proto endpoints
This commit is contained in:
+23
-14
@@ -124,15 +124,17 @@ esp_err_t handleDelete(httpd_req_t *request, const api_FileDeleteRequest &req) {
|
||||
}
|
||||
}
|
||||
|
||||
esp_err_t handleEdit(httpd_req_t *request, JsonVariant &json) {
|
||||
if (json.is<JsonObject>()) {
|
||||
const char *filename = json["file"].as<const char *>();
|
||||
const char *content = json["content"].as<const char *>();
|
||||
ESP_LOGI(TAG, "Editing file: %s", filename);
|
||||
return editFile(filename, content) ? WebServer::sendOk(request)
|
||||
: WebServer::sendError(request, 500, "Edit failed");
|
||||
esp_err_t handleEdit(httpd_req_t *request, const api_FileEditRequest &req) {
|
||||
ESP_LOGI(TAG, "Editing file: %s", req.path);
|
||||
|
||||
api_Response res = api_Response_init_zero;
|
||||
if (editFile(req.path, req.content->bytes, req.content->size)) {
|
||||
res.status_code = 200;
|
||||
res.which_payload = api_Response_empty_message_tag;
|
||||
return WebServer::sendProto(request, 200, res, api_Response_fields);
|
||||
} else {
|
||||
return WebServer::sendError(request, 500, "Edit failed");
|
||||
}
|
||||
return WebServer::sendError(request, 400, "Invalid request");
|
||||
}
|
||||
|
||||
bool deleteFile(const char *filename) { return ESP_FS.remove(filename); }
|
||||
@@ -167,19 +169,26 @@ std::string listFiles(const std::string &directory, bool isRoot) {
|
||||
return output;
|
||||
}
|
||||
|
||||
bool editFile(const char *filename, const char *content) {
|
||||
bool editFile(const char *filename, const uint8_t *content, size_t size) {
|
||||
File file = ESP_FS.open(filename, FILE_WRITE);
|
||||
if (!file) return false;
|
||||
|
||||
file.print(content);
|
||||
file.write(content, size);
|
||||
file.close();
|
||||
return true;
|
||||
}
|
||||
|
||||
esp_err_t mkdir(httpd_req_t *request, JsonVariant &json) {
|
||||
const char *path = json["path"].as<const char *>();
|
||||
ESP_LOGI(TAG, "Creating directory: %s", path);
|
||||
return ESP_FS.mkdir(path) ? WebServer::sendOk(request) : WebServer::sendError(request, 500, "mkdir failed");
|
||||
esp_err_t mkdir(httpd_req_t *request, const api_FileMkdirRequest &req) {
|
||||
ESP_LOGI(TAG, "Creating directory: %s", req.path);
|
||||
|
||||
api_Response res = api_Response_init_zero;
|
||||
if (ESP_FS.mkdir(req.path)) {
|
||||
res.status_code = 200;
|
||||
res.which_payload = api_Response_empty_message_tag;
|
||||
return WebServer::sendProto(request, 200, res, api_Response_fields);
|
||||
} else {
|
||||
return WebServer::sendError(request, 500, "mkdir failed");
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace FileSystem
|
||||
|
||||
+2
-4
@@ -106,10 +106,8 @@ void setupServer() {
|
||||
server.on("/api/config/*", HTTP_GET, [](httpd_req_t *request) { return FileSystem::getConfigFile(request); });
|
||||
server.on("/api/files", HTTP_GET, [&](httpd_req_t *request) { return FileSystem::getFilesProto(request); });
|
||||
PROTO_ENDPOINT(server, "/api/files/delete", file_delete_request, FileSystem::handleDelete);
|
||||
server.on("/api/files/edit", HTTP_POST,
|
||||
[&](httpd_req_t *request, JsonVariant &json) { return FileSystem::handleEdit(request, json); });
|
||||
server.on("/api/files/mkdir", HTTP_POST,
|
||||
[&](httpd_req_t *request, JsonVariant &json) { return FileSystem::mkdir(request, json); });
|
||||
PROTO_ENDPOINT(server, "/api/files/edit", file_edit_request, FileSystem::handleEdit);
|
||||
PROTO_ENDPOINT(server, "/api/files/mkdir", file_mkdir_request, FileSystem::mkdir);
|
||||
#if EMBED_WEBAPP
|
||||
mountStaticAssets(server);
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user