12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- package oauth2
- import (
- "encoding/json"
- "io/ioutil"
- "net/http"
- "net/url"
- "time"
- "golang.org/x/oauth2"
- )
- type GitlabField struct {
- ID int `json:"id"`
- Name string `json:"name"`
- Username string `json:"username"`
- State string `json:"state"`
- AvatarURL string `json:"avatar_url"`
- WebURL string `json:"web_url"`
- CreatedAt time.Time `json:"created_at"`
- Bio string `json:"bio"`
- BioHTML string `json:"bio_html"`
- Location interface{} `json:"location"`
- PublicEmail string `json:"public_email"`
- Skype string `json:"skype"`
- Linkedin string `json:"linkedin"`
- Twitter string `json:"twitter"`
- WebsiteURL string `json:"website_url"`
- Organization interface{} `json:"organization"`
- JobTitle string `json:"job_title"`
- Pronouns interface{} `json:"pronouns"`
- Bot bool `json:"bot"`
- WorkInformation interface{} `json:"work_information"`
- Followers int `json:"followers"`
- Following int `json:"following"`
- LastSignInAt time.Time `json:"last_sign_in_at"`
- ConfirmedAt time.Time `json:"confirmed_at"`
- LastActivityOn string `json:"last_activity_on"`
- Email string `json:"email"`
- ThemeID int `json:"theme_id"`
- ColorSchemeID int `json:"color_scheme_id"`
- ProjectsLimit int `json:"projects_limit"`
- CurrentSignInAt time.Time `json:"current_sign_in_at"`
- Identities []interface{} `json:"identities"`
- CanCreateGroup bool `json:"can_create_group"`
- CanCreateProject bool `json:"can_create_project"`
- TwoFactorEnabled bool `json:"two_factor_enabled"`
- External bool `json:"external"`
- PrivateProfile bool `json:"private_profile"`
- CommitEmail string `json:"commit_email"`
- SharedRunnersMinutesLimit interface{} `json:"shared_runners_minutes_limit"`
- ExtraSharedRunnersMinutesLimit interface{} `json:"extra_shared_runners_minutes_limit"`
- IsAdmin bool `json:"is_admin"`
- Note interface{} `json:"note"`
- UsingLicenseSeat bool `json:"using_license_seat"`
- }
- func gitlabScope() []string {
- return []string{"read_user api read_api"}
- }
- func gitlabEndpoint(server string) oauth2.Endpoint {
- Endpoint := oauth2.Endpoint{
- AuthURL: server + "/oauth/authorize",
- TokenURL: server + "/oauth/token",
- }
- return Endpoint
- }
- func gitlabUserInfo(accessToken string, server string) (string, error) {
- response, err := http.Get(server + "/api/v4/user?access_token=" + accessToken)
- if err != nil {
- return "", err
- }
- defer response.Body.Close()
- contents, err := ioutil.ReadAll(response.Body)
- if err != nil {
- return "", err
- }
- var data GitlabField
- json.Unmarshal([]byte(contents), &data)
- serverURL, err := url.Parse(server)
- if err != nil {
- return "", err
- }
- return data.Username + "@" + serverURL.Hostname(), err
- }
|