bool GetGroupByName()

in src/oslogin_utils.cc [1095:1126]


bool GetGroupByName(string name, struct group* result, BufferManager* buf, int* errnop) {
  std::stringstream url;
  std::vector<Group> groups;

  string response;
  long http_code;

  url.str("");
  url << kMetadataServerUrl << "groups?groupname=" << name;

  response.clear();
  http_code = 0;
  if (!HttpGet(url.str(), &response, &http_code) || http_code != 200 ||
      response.empty()) {
    *errnop = EAGAIN;
    return false;
  }

  groups.clear();
  if (!ParseJsonToGroups(response, &groups) || groups.empty() || groups.size() != 1) {
    *errnop = ENOENT;
    return false;
  }

  Group el = groups[0];
  result->gr_gid = el.gid;
  if (!buf->AppendString(el.name, &result->gr_name, errnop)) {
    return false;
  }

  return true;
}