// Copyright 2018 The Gogs Authors. All rights reserved. // Use of this source code is governed by a MIT-style // license that can be found in the LICENSE file. package github import ( "context" "crypto/tls" "fmt" "net/http" "strings" "github.com/google/go-github/github" ) func Authenticate(apiEndpoint, login, passwd string) (name string, email string, website string, location string, _ error) { tp := github.BasicAuthTransport{ Username: strings.TrimSpace(login), Password: strings.TrimSpace(passwd), Transport: &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, }, } client, err := github.NewEnterpriseClient(apiEndpoint, apiEndpoint, tp.Client()) if err != nil { return "", "", "", "", fmt.Errorf("create new client: %v", err) } user, _, err := client.Users.Get(context.Background(), "") if err != nil { return "", "", "", "", fmt.Errorf("get user info: %v", err) } if user.Name != nil { name = *user.Name } if user.Email != nil { email = *user.Email } else { email = login + "+github@local" } if user.HTMLURL != nil { website = strings.ToLower(*user.HTMLURL) } if user.Location != nil { location = strings.ToUpper(*user.Location) } return name, email, website, location, nil }