Made proper response structure for network scan
This commit is contained in:
@@ -39,19 +39,20 @@
|
|||||||
|
|
||||||
async function pollingResults() {
|
async function pollingResults() {
|
||||||
const result = await api.get<ProtoResponse>('/api/wifi/networks')
|
const result = await api.get<ProtoResponse>('/api/wifi/networks')
|
||||||
if (result.isErr()) {
|
if (result.isErr() || !result.inner) {
|
||||||
console.error(`Error occurred while fetching: `, result.inner)
|
console.error(`Error occurred while fetching: `, result.inner)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
if (result.inner.wifiNetworkList) {
|
// Check if scan is complete (status 200 means we have results)
|
||||||
listOfNetworks = result.inner.wifiNetworkList.networks
|
if (result.inner.statusCode === 200 && result.inner.wifiNetworkList) {
|
||||||
}
|
listOfNetworks = result.inner.wifiNetworkList.networks ?? []
|
||||||
scanActive = false
|
scanActive = false
|
||||||
if (listOfNetworks.length) {
|
|
||||||
clearInterval(pollingId)
|
clearInterval(pollingId)
|
||||||
pollingId = 0
|
pollingId = 0
|
||||||
|
return listOfNetworks.length
|
||||||
}
|
}
|
||||||
return listOfNetworks.length
|
// Still scanning (status 202)
|
||||||
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
|
|||||||
@@ -364,6 +364,7 @@ esp_err_t WebServer::sendOkProto(httpd_req_t* req) { return sendProto(req, 200,
|
|||||||
|
|
||||||
esp_err_t WebServer::sendProto(httpd_req_t* req, int status, const uint8_t* data, size_t len) {
|
esp_err_t WebServer::sendProto(httpd_req_t* req, int status, const uint8_t* data, size_t len) {
|
||||||
httpd_resp_set_status(req, status == 200 ? "200 OK"
|
httpd_resp_set_status(req, status == 200 ? "200 OK"
|
||||||
|
: status == 202 ? "202 Accepted"
|
||||||
: status == 400 ? "400 Bad Request"
|
: status == 400 ? "400 Bad Request"
|
||||||
: status == 404 ? "404 Not Found"
|
: status == 404 ? "404 Not Found"
|
||||||
: status == 500 ? "500 Internal Server Error"
|
: status == 500 ? "500 Internal Server Error"
|
||||||
|
|||||||
@@ -47,15 +47,21 @@ esp_err_t WiFiService::handleScan(httpd_req_t *request) {
|
|||||||
WiFi.scanDelete();
|
WiFi.scanDelete();
|
||||||
WiFi.scanNetworks(true);
|
WiFi.scanNetworks(true);
|
||||||
}
|
}
|
||||||
httpd_resp_set_status(request, "202 Accepted");
|
// Return 202 with empty_message payload (no pointer fields to encode)
|
||||||
return httpd_resp_send(request, nullptr, 0);
|
api_Response response = api_Response_init_zero;
|
||||||
|
response.status_code = 202;
|
||||||
|
response.which_payload = api_Response_empty_message_tag;
|
||||||
|
return WebServer::sendProto(request, 202, response, api_Response_fields);
|
||||||
}
|
}
|
||||||
|
|
||||||
esp_err_t WiFiService::getNetworks(httpd_req_t *request) {
|
esp_err_t WiFiService::getNetworks(httpd_req_t *request) {
|
||||||
int numNetworks = WiFi.scanComplete();
|
int numNetworks = WiFi.scanComplete();
|
||||||
if (numNetworks == -1) {
|
if (numNetworks == -1) {
|
||||||
httpd_resp_set_status(request, "202 Accepted");
|
// Scan in progress - return 202 with empty_message payload
|
||||||
return httpd_resp_send(request, nullptr, 0);
|
api_Response response = api_Response_init_zero;
|
||||||
|
response.status_code = 202;
|
||||||
|
response.which_payload = api_Response_empty_message_tag;
|
||||||
|
return WebServer::sendProto(request, 202, response, api_Response_fields);
|
||||||
} else if (numNetworks < -1) {
|
} else if (numNetworks < -1) {
|
||||||
return handleScan(request);
|
return handleScan(request);
|
||||||
}
|
}
|
||||||
@@ -75,6 +81,7 @@ esp_err_t WiFiService::getNetworks(httpd_req_t *request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
api_Response response = api_Response_init_zero;
|
api_Response response = api_Response_init_zero;
|
||||||
|
response.status_code = 200;
|
||||||
response.which_payload = api_Response_wifi_network_list_tag;
|
response.which_payload = api_Response_wifi_network_list_tag;
|
||||||
response.payload.wifi_network_list.networks = networks;
|
response.payload.wifi_network_list.networks = networks;
|
||||||
response.payload.wifi_network_list.networks_count = count;
|
response.payload.wifi_network_list.networks_count = count;
|
||||||
|
|||||||
Reference in New Issue
Block a user