diff options
Diffstat (limited to 'pkg/auth/github/github.go')
-rw-r--r-- | pkg/auth/github/github.go | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/pkg/auth/github/github.go b/pkg/auth/github/github.go new file mode 100644 index 00000000..2a8d8b48 --- /dev/null +++ b/pkg/auth/github/github.go @@ -0,0 +1,45 @@ +package github + +import ( + "context" + "crypto/tls" + "errors" + "fmt" + "net/http" + "strings" + + "github.com/google/go-github/github" +) + +func GITHUBAuth(apiEndpoint, userName, passwd string) (string, string, string, string, string, error) { + tr := &http.Transport{ + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, + } + tp := github.BasicAuthTransport{ + Username: strings.TrimSpace(userName), + Password: strings.TrimSpace(passwd), + Transport: tr, + } + client, err := github.NewEnterpriseClient(apiEndpoint, apiEndpoint, tp.Client()) + if err != nil { + return "", "", "", "", "", errors.New("Authentication failure: GitHub Api Endpoint can not be reached") + } + ctx := context.Background() + user, _, err := client.Users.Get(ctx, "") + if err != nil || user == nil { + fmt.Println(err) + msg := fmt.Sprintf("Authentication failure! Github Api Endpoint authticated failed! User %s", userName) + return "", "", "", "", "", errors.New(msg) + } + + var website = "" + if user.HTMLURL != nil { + website = strings.ToLower(*user.HTMLURL) + } + var location = "" + if user.Location != nil { + location = strings.ToUpper(*user.Location) + } + + return *user.Login, *user.Name, *user.Email, website, location, nil +} |