in src/oslogin_utils.cc [1048:1093]
bool GetGroupsForUser(string username, std::vector<Group>* groups, int* errnop) {
string response;
if (!(GetUser(username, &response))) {
DEBUG("GetGroupsForUser: !GetUser\n");
*errnop = ENOENT;
return false;
}
string email;
if (!ParseJsonToEmail(response, &email) || email.empty()) {
DEBUG("GetGroupsForUser: !ParseJsonToEmail\n");
*errnop = ENOENT;
return false;
}
std::stringstream url;
long http_code;
string pageToken ("");
do {
url.str("");
url << kMetadataServerUrl << "groups?email=" << email;
if (pageToken != "")
url << "&pagetoken=" << pageToken;
response.clear();
http_code = 0;
if (!HttpGet(url.str(), &response, &http_code) || http_code != 200 ||
response.empty()) {
*errnop = EAGAIN;
return false;
}
if (!ParseJsonToKey(response, "nextPageToken", &pageToken)) {
*errnop = ENOENT;
return false;
}
if (!ParseJsonToGroups(response, groups)) {
*errnop = ENOENT;
return false;
}
} while (pageToken != "0");
return true;
}