(ctx context.Context, creds *Credentials)
| 231 | } |
| 232 | |
| 233 | func (m *Manager) refreshLocked(ctx context.Context, creds *Credentials) error { |
| 234 | if creds.RefreshToken == "" { |
| 235 | return fmt.Errorf("no refresh token available") |
| 236 | } |
| 237 | |
| 238 | tokenEndpoint := creds.TokenEndpoint |
| 239 | if tokenEndpoint == "" { |
| 240 | tokenEndpoint = m.baseURL + "/oauth/tokens" |
| 241 | } |
| 242 | |
| 243 | token, err := refreshOAuthToken(ctx, m.httpClient, tokenEndpoint, creds.RefreshToken, oauthClientID, installID) |
| 244 | if err != nil { |
| 245 | return fmt.Errorf("token refresh failed: %w", err) |
| 246 | } |
| 247 | |
| 248 | creds.AccessToken = token.AccessToken |
| 249 | if token.RefreshToken != "" { |
| 250 | creds.RefreshToken = token.RefreshToken |
| 251 | } |
| 252 | if !token.ExpiresAt.IsZero() { |
| 253 | creds.ExpiresAt = token.ExpiresAt.Unix() |
| 254 | } |
| 255 | |
| 256 | return m.store.Save(m.baseURL, creds) |
| 257 | } |
| 258 | |
| 259 | // GetStore returns the credential store. |
| 260 | func (m *Manager) GetStore() *Store { |
no test coverage detected