mirror of
				https://github.com/steveiliop56/tinyauth.git
				synced 2025-10-31 06:05:43 +00:00 
			
		
		
		
	chore: add comments to code
This commit is contained in:
		| @@ -9,47 +9,58 @@ import ( | ||||
| 	"github.com/rs/zerolog/log" | ||||
| ) | ||||
|  | ||||
| // Github has a different response than the generic provider | ||||
| type GithubUserInfoResponse []struct { | ||||
| 	Email   string `json:"email"` | ||||
| 	Primary bool   `json:"primary"` | ||||
| } | ||||
|  | ||||
| // The scopes required for the github provider | ||||
| func GithubScopes() []string { | ||||
| 	return []string{"user:email"} | ||||
| } | ||||
|  | ||||
| func GetGithubEmail(client *http.Client) (string, error) { | ||||
| 	// Get the user emails from github using the oauth http client | ||||
| 	res, resErr := client.Get("https://api.github.com/user/emails") | ||||
|  | ||||
| 	// Check if there was an error | ||||
| 	if resErr != nil { | ||||
| 		return "", resErr | ||||
| 	} | ||||
|  | ||||
| 	log.Debug().Msg("Got response from github") | ||||
|  | ||||
| 	// Read the body of the response | ||||
| 	body, bodyErr := io.ReadAll(res.Body) | ||||
|  | ||||
| 	// Check if there was an error | ||||
| 	if bodyErr != nil { | ||||
| 		return "", bodyErr | ||||
| 	} | ||||
|  | ||||
| 	log.Debug().Msg("Read body from github") | ||||
|  | ||||
| 	// Parse the body into a user struct | ||||
| 	var emails GithubUserInfoResponse | ||||
|  | ||||
| 	// Unmarshal the body into the user struct | ||||
| 	jsonErr := json.Unmarshal(body, &emails) | ||||
|  | ||||
| 	// Check if there was an error | ||||
| 	if jsonErr != nil { | ||||
| 		return "", jsonErr | ||||
| 	} | ||||
|  | ||||
| 	log.Debug().Msg("Parsed emails from github") | ||||
|  | ||||
| 	// Find and return the primary email | ||||
| 	for _, email := range emails { | ||||
| 		if email.Primary { | ||||
| 			return email.Email, nil | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	// User does not have a primary email? | ||||
| 	return "", errors.New("no primary email found") | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Stavros
					Stavros