1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #include "pairing_service/pair_controller.h"
- #include <esp_log.h>
- #include <kbf.h>
- #include <kbf/http/client.h>
- #include "dk.h"
- #include "tasks/display_manager.h"
- using namespace kbf;
- using namespace dk;
- PairController::PairController() : Controller("/pair") {}
- static bool validate(const nlohmann::json &json) {
- if (json == nullptr) {
- ESP_LOGE(PairController::TAG, "json is null");
- return false;
- } else if (json.find("firebaseToken") == json.end()) {
- ESP_LOGE(PairController::TAG, "invalid json: missing firebaseToken");
- return false;
- }
- return true;
- }
- http::Response PairController::post(const http::Request &request) {
- ESP_LOGI(TAG, "pairing request: \"%s\"", request.body.c_str());
- auto json = request.json();
- if (!validate(json)) return http::Response("", 500);
- auto firebaseToken = json.find("firebaseToken")->get<string>();
- DisplayManager::setMessage("sending request");
- auto client = http::Client(CONFIG_DK_HTTP_CLIENT_TIMEOUT);
- nlohmann::json data = {
- { "device_uuid", DK_DEVICE_ID },
- { "firebase_token", firebaseToken }
- };
- auto response = client.post(CONFIG_DK_SERVER_API_URL "/register/pairing", data);
- if (response->status != 200) {
- ESP_LOGW(TAG, "failed: %d", response->status);
- DisplayManager::setMessage("failed", DisplayManager::defaultTimeout);
- // TODO set pairing mode
- // mainEventGroup->setBit(MainEvents::SET_PAIRING_MODE);
- return http::Response(nlohmann::json({{"success", false}}));
- }
- ESP_LOGI(TAG, "pairing request sent");
- DisplayManager::setMessage("request sent");
- return http::Response(nlohmann::json({{"success", true}}));
- }
- void PairController::onResponseSent(const http::Response &response) {
- if (response.status != 200) {
- ESP_LOGW(TAG, "onResponseSent: response.status = %d", response.status);
- return;
- }
- mainEventGroup->setBit(MainEvents::STOP_AP);
- }
|