verify_login: Make VerifyLogin exceptionless
This function can be simplified by attempting to find the username within the JSON object and then only accessing it if it does. There's no need to blindly access the data itself. This also eliminates the need to copy the string to a local as well, since we already have the element itself, we can just compare against it. For the failure case, it's the same if we were checking that the provided username string is empty.
This commit is contained in:
parent
74465389f3
commit
38b9d1780f
1 changed files with 11 additions and 7 deletions
|
@ -12,15 +12,19 @@ std::future<bool> VerifyLogin(std::string& username, std::string& token,
|
||||||
const std::string& endpoint_url, std::function<void()> func) {
|
const std::string& endpoint_url, std::function<void()> func) {
|
||||||
auto get_func = [func, username](const std::string& reply) -> bool {
|
auto get_func = [func, username](const std::string& reply) -> bool {
|
||||||
func();
|
func();
|
||||||
if (reply.empty())
|
|
||||||
|
if (reply.empty()) {
|
||||||
return false;
|
return false;
|
||||||
nlohmann::json json = nlohmann::json::parse(reply);
|
|
||||||
std::string result;
|
|
||||||
try {
|
|
||||||
result = json["username"];
|
|
||||||
} catch (const nlohmann::detail::out_of_range&) {
|
|
||||||
}
|
}
|
||||||
return result == username;
|
|
||||||
|
nlohmann::json json = nlohmann::json::parse(reply);
|
||||||
|
const auto iter = json.find("username");
|
||||||
|
|
||||||
|
if (iter == json.end()) {
|
||||||
|
return username.empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
return username == *iter;
|
||||||
};
|
};
|
||||||
return GetJson<bool>(get_func, endpoint_url, false, username, token);
|
return GetJson<bool>(get_func, endpoint_url, false, username, token);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue