123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- package oauth2
- import (
- "encoding/json"
- "io/ioutil"
- "net/http"
- "time"
- "golang.org/x/oauth2"
- "golang.org/x/oauth2/github"
- )
- type GithubField struct {
- Login string `json:"login"`
- ID int `json:"id"`
- NodeID string `json:"node_id"`
- AvatarURL string `json:"avatar_url"`
- GravatarID string `json:"gravatar_id"`
- URL string `json:"url"`
- HTMLURL string `json:"html_url"`
- FollowersURL string `json:"followers_url"`
- FollowingURL string `json:"following_url"`
- GistsURL string `json:"gists_url"`
- StarredURL string `json:"starred_url"`
- SubscriptionsURL string `json:"subscriptions_url"`
- OrganizationsURL string `json:"organizations_url"`
- ReposURL string `json:"repos_url"`
- EventsURL string `json:"events_url"`
- ReceivedEventsURL string `json:"received_events_url"`
- Type string `json:"type"`
- SiteAdmin bool `json:"site_admin"`
- Name string `json:"name"`
- Company string `json:"company"`
- Blog string `json:"blog"`
- Location string `json:"location"`
- Email interface{} `json:"email"`
- Hireable interface{} `json:"hireable"`
- Bio string `json:"bio"`
- TwitterUsername interface{} `json:"twitter_username"`
- PublicRepos int `json:"public_repos"`
- PublicGists int `json:"public_gists"`
- Followers int `json:"followers"`
- Following int `json:"following"`
- CreatedAt time.Time `json:"created_at"`
- UpdatedAt time.Time `json:"updated_at"`
- PrivateGists int `json:"private_gists"`
- TotalPrivateRepos int `json:"total_private_repos"`
- OwnedPrivateRepos int `json:"owned_private_repos"`
- DiskUsage int `json:"disk_usage"`
- Collaborators int `json:"collaborators"`
- TwoFactorAuthentication bool `json:"two_factor_authentication"`
- Plan struct {
- Name string `json:"name"`
- Space int `json:"space"`
- Collaborators int `json:"collaborators"`
- PrivateRepos int `json:"private_repos"`
- } `json:"plan"`
- }
- func githubScope() []string {
- return []string{"read:user"}
- }
- func githubEndpoint() oauth2.Endpoint {
- return github.Endpoint
- }
- func githubUserInfo(accessToken string) (string, error) {
- client := &http.Client{}
- req, err := http.NewRequest("GET", "https://api.github.com/user", nil)
- req.Header.Set("Authorization", "token "+accessToken)
- req.Header.Set("Accept", "application/vnd.github.v3+json")
- response, err := client.Do(req)
- defer response.Body.Close()
- contents, err := ioutil.ReadAll(response.Body)
- var data GithubField
- json.Unmarshal([]byte(contents), &data)
- return data.Login + "@github.com", err
- }
|