std::future<bool> UserData::SendFriendResponse(const UUID &id, const UUID &requester, const std::string &response, BooleanCallback success, APIFailureCallback failure) { return std::async(std::launch::async, [=]() -> bool { std::stringstream url; url << "/friends/" << id.toString() << "/response"; std::map<std::string, std::string> params{ std::make_pair("requester_id", requester.toString()), std::make_pair("action", response) }; std::string error; APIRequestManager *manager = APIRequestManager::GetDefaultManager(); boost::optional<std::string> response = manager->Send(url.str(), "POST", params, error); if (response.is_initialized()) { Poco::JSON::Parser parser; auto jsonObject = parser.parse(response.get()).extract<JSONObject::Ptr>(); return jsonObject->getValue<bool>("success"); } else { if (failure) { failure(error); } return false; } }); }