mirror of
https://github.com/esphome/esphome.git
synced 2024-12-22 21:44:55 +01:00
Allow button press action in web_server to be executed via GET method (#5938)
This commit is contained in:
parent
dbf50381f1
commit
df5dfb8087
1 changed files with 12 additions and 12 deletions
|
@ -486,7 +486,7 @@ void WebServer::handle_switch_request(AsyncWebServerRequest *request, const UrlM
|
||||||
if (obj->get_object_id() != match.id)
|
if (obj->get_object_id() != match.id)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (request->method() == HTTP_GET) {
|
if (request->method() == HTTP_GET && match.method.empty()) {
|
||||||
std::string data = this->switch_json(obj, obj->state, DETAIL_STATE);
|
std::string data = this->switch_json(obj, obj->state, DETAIL_STATE);
|
||||||
request->send(200, "application/json", data.c_str());
|
request->send(200, "application/json", data.c_str());
|
||||||
} else if (match.method == "toggle") {
|
} else if (match.method == "toggle") {
|
||||||
|
@ -517,7 +517,7 @@ void WebServer::handle_button_request(AsyncWebServerRequest *request, const UrlM
|
||||||
for (button::Button *obj : App.get_buttons()) {
|
for (button::Button *obj : App.get_buttons()) {
|
||||||
if (obj->get_object_id() != match.id)
|
if (obj->get_object_id() != match.id)
|
||||||
continue;
|
continue;
|
||||||
if (request->method() == HTTP_POST && match.method == "press") {
|
if (match.method == "press") {
|
||||||
this->schedule_([obj]() { obj->press(); });
|
this->schedule_([obj]() { obj->press(); });
|
||||||
request->send(200);
|
request->send(200);
|
||||||
return;
|
return;
|
||||||
|
@ -572,7 +572,7 @@ void WebServer::handle_fan_request(AsyncWebServerRequest *request, const UrlMatc
|
||||||
if (obj->get_object_id() != match.id)
|
if (obj->get_object_id() != match.id)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (request->method() == HTTP_GET) {
|
if (request->method() == HTTP_GET && match.method.empty()) {
|
||||||
std::string data = this->fan_json(obj, DETAIL_STATE);
|
std::string data = this->fan_json(obj, DETAIL_STATE);
|
||||||
request->send(200, "application/json", data.c_str());
|
request->send(200, "application/json", data.c_str());
|
||||||
} else if (match.method == "toggle") {
|
} else if (match.method == "toggle") {
|
||||||
|
@ -630,7 +630,7 @@ void WebServer::handle_light_request(AsyncWebServerRequest *request, const UrlMa
|
||||||
if (obj->get_object_id() != match.id)
|
if (obj->get_object_id() != match.id)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (request->method() == HTTP_GET) {
|
if (request->method() == HTTP_GET && match.method.empty()) {
|
||||||
std::string data = this->light_json(obj, DETAIL_STATE);
|
std::string data = this->light_json(obj, DETAIL_STATE);
|
||||||
request->send(200, "application/json", data.c_str());
|
request->send(200, "application/json", data.c_str());
|
||||||
} else if (match.method == "toggle") {
|
} else if (match.method == "toggle") {
|
||||||
|
@ -736,7 +736,7 @@ void WebServer::handle_cover_request(AsyncWebServerRequest *request, const UrlMa
|
||||||
if (obj->get_object_id() != match.id)
|
if (obj->get_object_id() != match.id)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (request->method() == HTTP_GET) {
|
if (request->method() == HTTP_GET && match.method.empty()) {
|
||||||
std::string data = this->cover_json(obj, DETAIL_STATE);
|
std::string data = this->cover_json(obj, DETAIL_STATE);
|
||||||
request->send(200, "application/json", data.c_str());
|
request->send(200, "application/json", data.c_str());
|
||||||
continue;
|
continue;
|
||||||
|
@ -805,7 +805,7 @@ void WebServer::handle_number_request(AsyncWebServerRequest *request, const UrlM
|
||||||
if (obj->get_object_id() != match.id)
|
if (obj->get_object_id() != match.id)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (request->method() == HTTP_GET) {
|
if (request->method() == HTTP_GET && match.method.empty()) {
|
||||||
std::string data = this->number_json(obj, obj->state, DETAIL_STATE);
|
std::string data = this->number_json(obj, obj->state, DETAIL_STATE);
|
||||||
request->send(200, "application/json", data.c_str());
|
request->send(200, "application/json", data.c_str());
|
||||||
return;
|
return;
|
||||||
|
@ -910,7 +910,7 @@ void WebServer::handle_text_request(AsyncWebServerRequest *request, const UrlMat
|
||||||
if (obj->get_object_id() != match.id)
|
if (obj->get_object_id() != match.id)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (request->method() == HTTP_GET) {
|
if (request->method() == HTTP_GET && match.method.empty()) {
|
||||||
std::string data = this->text_json(obj, obj->state, DETAIL_STATE);
|
std::string data = this->text_json(obj, obj->state, DETAIL_STATE);
|
||||||
request->send(200, "text/json", data.c_str());
|
request->send(200, "text/json", data.c_str());
|
||||||
return;
|
return;
|
||||||
|
@ -961,7 +961,7 @@ void WebServer::handle_select_request(AsyncWebServerRequest *request, const UrlM
|
||||||
if (obj->get_object_id() != match.id)
|
if (obj->get_object_id() != match.id)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (request->method() == HTTP_GET) {
|
if (request->method() == HTTP_GET && match.method.empty()) {
|
||||||
auto detail = DETAIL_STATE;
|
auto detail = DETAIL_STATE;
|
||||||
auto *param = request->getParam("detail");
|
auto *param = request->getParam("detail");
|
||||||
if (param && param->value() == "all") {
|
if (param && param->value() == "all") {
|
||||||
|
@ -1016,7 +1016,7 @@ void WebServer::handle_climate_request(AsyncWebServerRequest *request, const Url
|
||||||
if (obj->get_object_id() != match.id)
|
if (obj->get_object_id() != match.id)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (request->method() == HTTP_GET) {
|
if (request->method() == HTTP_GET && match.method.empty()) {
|
||||||
std::string data = this->climate_json(obj, DETAIL_STATE);
|
std::string data = this->climate_json(obj, DETAIL_STATE);
|
||||||
request->send(200, "application/json", data.c_str());
|
request->send(200, "application/json", data.c_str());
|
||||||
return;
|
return;
|
||||||
|
@ -1162,7 +1162,7 @@ void WebServer::handle_lock_request(AsyncWebServerRequest *request, const UrlMat
|
||||||
if (obj->get_object_id() != match.id)
|
if (obj->get_object_id() != match.id)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (request->method() == HTTP_GET) {
|
if (request->method() == HTTP_GET && match.method.empty()) {
|
||||||
std::string data = this->lock_json(obj, obj->state, DETAIL_STATE);
|
std::string data = this->lock_json(obj, obj->state, DETAIL_STATE);
|
||||||
request->send(200, "application/json", data.c_str());
|
request->send(200, "application/json", data.c_str());
|
||||||
} else if (match.method == "lock") {
|
} else if (match.method == "lock") {
|
||||||
|
@ -1201,7 +1201,7 @@ void WebServer::handle_alarm_control_panel_request(AsyncWebServerRequest *reques
|
||||||
if (obj->get_object_id() != match.id)
|
if (obj->get_object_id() != match.id)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (request->method() == HTTP_GET) {
|
if (request->method() == HTTP_GET && match.method.empty()) {
|
||||||
std::string data = this->alarm_control_panel_json(obj, obj->get_state(), DETAIL_STATE);
|
std::string data = this->alarm_control_panel_json(obj, obj->get_state(), DETAIL_STATE);
|
||||||
request->send(200, "application/json", data.c_str());
|
request->send(200, "application/json", data.c_str());
|
||||||
return;
|
return;
|
||||||
|
@ -1251,7 +1251,7 @@ bool WebServer::canHandle(AsyncWebServerRequest *request) {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USE_BUTTON
|
#ifdef USE_BUTTON
|
||||||
if (request->method() == HTTP_POST && match.domain == "button")
|
if ((request->method() == HTTP_POST || request->method() == HTTP_GET) && match.domain == "button")
|
||||||
return true;
|
return true;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue