func (client *Client) FindOrCreateToken(user, password, twoFactorCode string) (token string, err error) { authUrl, e := octokit.AuthorizationsURL.Expand(nil) if e != nil { err = &AuthError{e} return } basicAuth := octokit.BasicAuth{ Login: user, Password: password, OneTimePassword: twoFactorCode, } c := client.newOctokitClient(basicAuth) authsService := c.Authorizations(client.requestURL(authUrl)) authParam := octokit.AuthorizationParams{ Scopes: []string{"repo"}, NoteURL: OAuthAppURL, } count := 1 for { note, e := authTokenNote(count) if e != nil { err = e return } authParam.Note = note auth, result := authsService.Create(authParam) if !result.HasError() { token = auth.Token break } authErr := &AuthError{result.Err} if authErr.IsDuplicatedTokenError() { if count >= 9 { err = authErr break } else { count++ continue } } else { err = authErr break } } return }
func findOrCreateToken(user, password, twoFactorCode string) (token string, err error) { basicAuth := octokit.BasicAuth{Login: user, Password: password, OneTimePassword: twoFactorCode} client := octokit.NewClient(basicAuth) authsService, err := client.Authorizations(nil, nil) if err != nil { return } auths, result := authsService.GetAll() if result.HasError() { err = result.Err return } for _, auth := range auths { if auth.NoteURL == OAuthAppURL { token = auth.Token break } } if token == "" { authParam := octokit.AuthorizationParams{} authParam.Scopes = append(authParam.Scopes, "repo") authParam.Note = "gh" authParam.NoteURL = OAuthAppURL auth, result := authsService.Create(authParam) if result.HasError() { err = result.Err return } token = auth.Token } return }