email.cpp
1 #include "api.h" 2 #include "services/email.h" 3 #include <config.h> 4 5 #include <ArduinoJson.h> 6 7 void services::http::api::email::registerRoutes(AsyncWebServer &server) { 8 #if CERATINA_SMTP_ENABLED 9 server.on("/api/smtp/config", HTTP_GET, 10 [](AsyncWebServerRequest *request) { 11 char host[128] = {0}; 12 uint16_t port = 0; 13 bool ok = ::services::email::accessEndpoint(host, sizeof(host), &port); 14 15 JsonDocument doc; 16 doc["ok"] = ok; 17 JsonObject data = doc["data"].to<JsonObject>(); 18 data["smtp_enabled"] = true; 19 data["smtp_test_enabled"] = config::smtp::TEST_ENABLED == 1; 20 if (ok) { 21 data["smtp_host"] = host; 22 data["smtp_port"] = port; 23 } 24 25 String json; 26 serializeJson(doc, json); 27 request->send(200, asyncsrv::T_application_json, json); 28 }); 29 30 server.on("/api/smtp/send", HTTP_POST, 31 [](AsyncWebServerRequest *request) { 32 char host[128] = {0}; 33 uint16_t port = 0; 34 if (!::services::email::accessEndpoint(host, sizeof(host), &port)) { 35 request->send(400, asyncsrv::T_application_json, 36 "{\"ok\":false,\"error\":\"SMTP not configured\"}"); 37 return; 38 } 39 40 bool sent = ::services::email::sendTest(); 41 JsonDocument doc; 42 doc["ok"] = sent; 43 JsonObject data = doc["data"].to<JsonObject>(); 44 data["smtp_host"] = host; 45 data["smtp_port"] = port; 46 data["sent"] = sent; 47 48 String json; 49 serializeJson(doc, json); 50 request->send(sent ? 200 : 500, asyncsrv::T_application_json, json); 51 }); 52 #else 53 (void)server; 54 #endif 55 }