core, web_service: Check for error when registering rooms

The `Register()` function can now handle error results and the error will be passed immediately to the Qt frontend, instead of being ignored silently and failing later with a "Room is not registered".
This commit is contained in:
zhupengfei 2019-04-19 22:55:49 +08:00
parent 81988d96fe
commit 36051204cc
7 changed files with 67 additions and 33 deletions

View file

@ -117,16 +117,16 @@ Common::WebResult RoomJson::Update() {
return client.PostJson(fmt::format("/lobby/{}", room_id), json.dump(), false);
}
std::string RoomJson::Register() {
Common::WebResult RoomJson::Register() {
nlohmann::json json = room;
auto reply = client.PostJson("/lobby", json.dump(), false).returned_data;
if (reply.empty()) {
return "";
auto result = client.PostJson("/lobby", json.dump(), false);
if (result.result_code != Common::WebResult::Code::Success) {
return result;
}
auto reply_json = nlohmann::json::parse(reply);
auto reply_json = nlohmann::json::parse(result.returned_data);
room = reply_json.get<AnnounceMultiplayerRoom::Room>();
room_id = reply_json.at("id").get<std::string>();
return room.verify_UID;
return Common::WebResult{Common::WebResult::Code::Success, "", room.verify_UID};
}
void RoomJson::ClearPlayers() {

View file

@ -29,7 +29,7 @@ public:
const AnnounceMultiplayerRoom::MacAddress& mac_address, const u64 game_id,
const std::string& game_name) override;
Common::WebResult Update() override;
std::string Register() override;
Common::WebResult Register() override;
void ClearPlayers() override;
AnnounceMultiplayerRoom::RoomList GetRoomList() override;
void Delete() override;