pair_controller.cpp 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #include "pairing_service/pair_controller.h"
  2. #include <esp_log.h>
  3. #include <kbf.h>
  4. #include <kbf/http/client.h>
  5. #include "dk.h"
  6. #include "tasks/display_manager.h"
  7. using namespace kbf;
  8. using namespace dk;
  9. PairController::PairController() : Controller("/pair") {}
  10. static bool validate(const nlohmann::json &json) {
  11. if (json == nullptr) {
  12. ESP_LOGE(PairController::TAG, "json is null");
  13. return false;
  14. } else if (json.find("firebaseToken") == json.end()) {
  15. ESP_LOGE(PairController::TAG, "invalid json: missing firebaseToken");
  16. return false;
  17. }
  18. return true;
  19. }
  20. http::Response PairController::post(const http::Request &request) {
  21. ESP_LOGI(TAG, "pairing request: \"%s\"", request.body.c_str());
  22. auto json = request.json();
  23. if (!validate(json)) return http::Response("", 500);
  24. auto firebaseToken = json.find("firebaseToken")->get<string>();
  25. DisplayManager::setMessage("sending request");
  26. auto client = http::Client(CONFIG_DK_HTTP_CLIENT_TIMEOUT);
  27. nlohmann::json data = {
  28. { "device_uuid", DK_DEVICE_ID },
  29. { "firebase_token", firebaseToken }
  30. };
  31. auto response = client.post(CONFIG_DK_SERVER_API_URL "/register/pairing", data);
  32. if (response->status != 200) {
  33. ESP_LOGW(TAG, "failed: %d", response->status);
  34. DisplayManager::setMessage("failed", DisplayManager::defaultTimeout);
  35. // TODO set pairing mode
  36. // mainEventGroup->setBit(MainEvents::SET_PAIRING_MODE);
  37. return http::Response(nlohmann::json({{"success", false}}));
  38. }
  39. ESP_LOGI(TAG, "pairing request sent");
  40. DisplayManager::setMessage("request sent");
  41. return http::Response(nlohmann::json({{"success", true}}));
  42. }
  43. void PairController::onResponseSent(const http::Response &response) {
  44. if (response.status != 200) {
  45. ESP_LOGW(TAG, "onResponseSent: response.status = %d", response.status);
  46. return;
  47. }
  48. mainEventGroup->setBit(MainEvents::STOP_AP);
  49. }