func main() { r := bufio.NewReader(os.Stdin) fmt.Print("GitHub Username: "******"GitHub Password: "******"") // Is this a two-factor auth error? If so, prompt for OTP and try again. if _, ok := err.(*github.TwoFactorAuthError); err != nil && ok { fmt.Print("\nGitHub OTP: ") otp, _ := r.ReadString('\n') tp.OTP = strings.TrimSpace(otp) user, _, err = client.Users.Get("") } if err != nil { fmt.Printf("\nerror: %v\n", err) return } fmt.Printf("\n%v\n", github.Stringify(user)) }
func (grp githubRegistryProvider) createGithubClient(credentialName string) (*http.Client, *github.Client, error) { if credentialName == "" { return http.DefaultClient, github.NewClient(nil), nil } c, err := grp.cp.GetCredential(credentialName) if err != nil { log.Printf("Failed to fetch credential %s: %v", credentialName, err) log.Print("Trying to use unauthenticated client") return http.DefaultClient, github.NewClient(nil), nil } if c != nil { if c.APIToken != "" { ts := oauth2.StaticTokenSource( &oauth2.Token{AccessToken: string(c.APIToken)}, ) tc := oauth2.NewClient(oauth2.NoContext, ts) return tc, github.NewClient(tc), nil } if c.BasicAuth.Username != "" && c.BasicAuth.Password != "" { tp := github.BasicAuthTransport{ Username: c.BasicAuth.Username, Password: c.BasicAuth.Password, } return tp.Client(), github.NewClient(tp.Client()), nil } } return nil, nil, fmt.Errorf("No suitable credential found for %s", credentialName) }
func githubAuth(configs *Config) *github.Client { tp := github.BasicAuthTransport{ Username: strings.TrimSpace(configs.Github_Login), Password: strings.TrimSpace(configs.Github_Password), } client := github.NewClient(tp.Client()) user, _, err := client.Users.Get("") if err != nil { log.Printf("error: %v", err) return nil } else { log.Printf("INFO: Logged in as: %s", *user.Login) return client } }
// getUserPassClient returns a GitHub client for authorization testing. The client // uses BasicAuth via GH username and password passed in environment variables // (and will skip the calling test if those vars are not present). func getUserPassClient(t *testing.T) *github.Client { username, ok := os.LookupEnv(envKeyGitHubUsername) if !ok { t.Skipf(msgEnvMissing, envKeyGitHubUsername) } password, ok := os.LookupEnv(envKeyGitHubPassword) if !ok { t.Skipf(msgEnvMissing, envKeyGitHubPassword) } tp := github.BasicAuthTransport{ Username: strings.TrimSpace(username), Password: strings.TrimSpace(password), } return github.NewClient(tp.Client()) }