Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 581935e249 |
@@ -1 +1 @@
|
|||||||
0.1.146
|
0.1.144
|
||||||
|
|||||||
@@ -76,14 +76,13 @@ func (c *githubReleaseClientError) FetchChecksumFile(ctx context.Context, url st
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *githubReleaseClient) FetchLatestRelease(ctx context.Context, repo string) (*service.GitHubRelease, error) {
|
func (c *githubReleaseClient) FetchLatestRelease(ctx context.Context, repo string) (*service.GitHubRelease, error) {
|
||||||
// 使用 Gitea API(兼容 GitHub Release API 格式)
|
url := fmt.Sprintf("https://api.github.com/repos/%s/releases/latest", repo)
|
||||||
url := fmt.Sprintf("http://git.jianshixingqiu.com/api/v1/repos/%s/releases/latest", repo)
|
|
||||||
|
|
||||||
req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil)
|
req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
req.Header.Set("Accept", "application/json")
|
req.Header.Set("Accept", "application/vnd.github.v3+json")
|
||||||
req.Header.Set("User-Agent", "Sub2API-Updater")
|
req.Header.Set("User-Agent", "Sub2API-Updater")
|
||||||
|
|
||||||
resp, err := c.httpClient.Do(req)
|
resp, err := c.httpClient.Do(req)
|
||||||
@@ -93,7 +92,7 @@ func (c *githubReleaseClient) FetchLatestRelease(ctx context.Context, repo strin
|
|||||||
defer func() { _ = resp.Body.Close() }()
|
defer func() { _ = resp.Body.Close() }()
|
||||||
|
|
||||||
if resp.StatusCode != http.StatusOK {
|
if resp.StatusCode != http.StatusOK {
|
||||||
return nil, fmt.Errorf("Gitea API returned %d", resp.StatusCode)
|
return nil, fmt.Errorf("GitHub API returned %d", resp.StatusCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
var release service.GitHubRelease
|
var release service.GitHubRelease
|
||||||
|
|||||||
@@ -62,16 +62,16 @@ func (p *GeminiTokenProvider) GetAccessToken(ctx context.Context, account *Accou
|
|||||||
|
|
||||||
cacheKey := GeminiTokenCacheKey(account)
|
cacheKey := GeminiTokenCacheKey(account)
|
||||||
|
|
||||||
// 1) Try cache first — skip if token is already expired or within refresh skew.
|
// 1) Try cache first.
|
||||||
expiresAt := account.GetCredentialAsTime("expires_at")
|
if p.tokenCache != nil {
|
||||||
needsRefresh := expiresAt == nil || time.Until(*expiresAt) <= geminiTokenRefreshSkew
|
|
||||||
if !needsRefresh && p.tokenCache != nil {
|
|
||||||
if token, err := p.tokenCache.GetAccessToken(ctx, cacheKey); err == nil && strings.TrimSpace(token) != "" {
|
if token, err := p.tokenCache.GetAccessToken(ctx, cacheKey); err == nil && strings.TrimSpace(token) != "" {
|
||||||
return token, nil
|
return token, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2) Refresh if needed (pre-expiry skew).
|
// 2) Refresh if needed (pre-expiry skew).
|
||||||
|
expiresAt := account.GetCredentialAsTime("expires_at")
|
||||||
|
needsRefresh := expiresAt == nil || time.Until(*expiresAt) <= geminiTokenRefreshSkew
|
||||||
|
|
||||||
if needsRefresh && p.refreshAPI != nil && p.executor != nil {
|
if needsRefresh && p.refreshAPI != nil && p.executor != nil {
|
||||||
result, err := p.refreshAPI.RefreshIfNeeded(ctx, account, p.executor, geminiTokenRefreshSkew)
|
result, err := p.refreshAPI.RefreshIfNeeded(ctx, account, p.executor, geminiTokenRefreshSkew)
|
||||||
|
|||||||
Reference in New Issue
Block a user