(client *http.Client, user *structs.User, orgID string, team string)
| 149 | } |
| 150 | |
| 151 | func getTeamMembershipStateFromGitHub(client *http.Client, user *structs.User, orgID string, team string) (isMember bool, rerr error) { |
| 152 | replacements := strings.NewReplacer(":org_id", orgID, ":team_slug", team, ":username", user.Username) |
| 153 | membershipStateResp, err := client.Get(replacements.Replace(cfg.GenOAuth.UserTeamURL)) |
| 154 | if err != nil { |
| 155 | log.Error(err) |
| 156 | return false, err |
| 157 | } |
| 158 | defer func() { |
| 159 | if err := membershipStateResp.Body.Close(); err != nil { |
| 160 | rerr = err |
| 161 | } |
| 162 | }() |
| 163 | if membershipStateResp.StatusCode == 200 { |
| 164 | data, _ := io.ReadAll(membershipStateResp.Body) |
| 165 | log.Infof("github team membership body: ", string(data)) |
| 166 | ghTeamState := structs.GitHubTeamMembershipState{} |
| 167 | if err = json.Unmarshal(data, &ghTeamState); err != nil { |
| 168 | log.Error(err) |
| 169 | return false, err |
| 170 | } |
| 171 | log.Debugf("getTeamMembershipStateFromGitHub ghTeamState %s", ghTeamState) |
| 172 | return ghTeamState.State == "active", nil |
| 173 | } else if membershipStateResp.StatusCode == 404 { |
| 174 | log.Debug("getTeamMembershipStateFromGitHub isMember: false") |
| 175 | return false, err |
| 176 | } else { |
| 177 | log.Errorf("getTeamMembershipStateFromGitHub: unexpected status code %d", membershipStateResp.StatusCode) |
| 178 | return false, errors.New("Unexpected response status " + membershipStateResp.Status) |
| 179 | } |
| 180 | } |
no outgoing calls