pkg/oauth2/token.go (64 lines of code) (raw):

package oauth2 import ( "time" "gitlab.com/gitlab-org/cli/internal/config" ) type AuthToken struct { AccessToken string `json:"access_token"` RefreshToken string `json:"refresh_token"` ExpiresIn int `json:"expires_in"` ExpiryDate time.Time `json:"expires_date"` CodeVerifier string `json:"code_verifier"` } func (t *AuthToken) CalcExpiresDate() { t.ExpiryDate = time.Now().Add(time.Second * time.Duration(t.ExpiresIn)) } func tokenFromConfig(hostname string, cfg config.Config) (*AuthToken, error) { result := &AuthToken{} var err error expiryDateString, err := cfg.Get(hostname, "oauth2_expiry_date") if err != nil { return nil, err } result.ExpiryDate, err = time.Parse(time.RFC822, expiryDateString) if err != nil { return nil, err } result.RefreshToken, err = cfg.Get(hostname, "oauth2_refresh_token") if err != nil { return nil, err } result.CodeVerifier, err = cfg.Get(hostname, "oauth2_code_verifier") if err != nil { return nil, err } result.AccessToken, err = cfg.Get(hostname, "token") if err != nil { return nil, err } return result, nil } func (token *AuthToken) SetConfig(hostname string, cfg config.Config) error { err := cfg.Set(hostname, "is_oauth2", "true") if err != nil { return err } err = cfg.Set(hostname, "oauth2_refresh_token", token.RefreshToken) if err != nil { return err } token.CalcExpiresDate() err = cfg.Set(hostname, "oauth2_expiry_date", token.ExpiryDate.Format(time.RFC822)) if err != nil { return err } err = cfg.Set(hostname, "token", token.AccessToken) if err != nil { return err } err = cfg.Set(hostname, "oauth2_code_verifier", token.CodeVerifier) if err != nil { return err } return nil }