11 std::shared_ptr<Networking>& networking) {
12 auto scan_wifi_networks_handler = std::make_shared<HTTPRequestHandler>(
13 1 << HTTP_POST,
"/api/wifi/scan", [networking](httpd_req_t* req) {
14 networking->start_wifi_scan();
16 httpd_resp_set_status(req,
"202 Accepted");
17 httpd_resp_send(req,
"SCAN STARTED", 0);
21 server->add_handler(scan_wifi_networks_handler);
23 auto scan_results_handler = std::make_shared<HTTPRequestHandler>(
24 1 << HTTP_GET,
"/api/wifi/scan-results", [networking](httpd_req_t* req) {
25 std::vector<WiFiNetworkInfo> ssid_list;
26 int16_t result = networking->get_wifi_scan_results(ssid_list);
27 if (result == WIFI_SCAN_RUNNING) {
29 httpd_resp_set_status(req,
"202 Accepted");
30 httpd_resp_send(req,
"SCAN RUNNING", 0);
32 }
else if (result == WIFI_SCAN_FAILED) {
34 httpd_resp_set_status(req,
"400 Bad Request");
35 httpd_resp_send(req,
"SCAN FAILED", 0);
40 JsonArray networks = doc[
"networks"].to<JsonArray>();
41 for (
auto& ssid_info : ssid_list) {
42 JsonObject network = networks.add<JsonObject>();
43 ssid_info.as_json(network);
46 serializeJson(doc, json_str);
47 httpd_resp_set_type(req,
"application/json");
48 httpd_resp_send(req, json_str.c_str(), json_str.length());
52 server->add_handler(scan_results_handler);