aboutsummaryrefslogtreecommitdiff
path: root/web/sync.go
diff options
context:
space:
mode:
authorMartin Kagamino Lehoux <martin@lehoux.net>2026-08-23 13:13:30 +0200
committerMartin Kagamino Lehoux <martin@lehoux.net>2026-08-23 13:13:30 +0200
commit1125e0b7086dd2b71e0558aaf641c23dea02f200 (patch)
tree9113903e7d722dd2b5ea0f419f33d7705978e2c9 /web/sync.go
parent2a6189bda8dd9f39d9177ffca2330101e914d8f0 (diff)
Apply go fix modernizations and refresh TODO list
Diffstat (limited to 'web/sync.go')
-rw-r--r--web/sync.go14
1 files changed, 4 insertions, 10 deletions
diff --git a/web/sync.go b/web/sync.go
index fdb3c4e..0b95b93 100644
--- a/web/sync.go
+++ b/web/sync.go
@@ -83,8 +83,7 @@ func (s *Server) handleSync(w http.ResponseWriter, r *http.Request) {
return writeSyncEvent(w, flusher, "progress", progress)
})
if err != nil {
- var rateErr *strava.RateLimitError
- if errors.As(err, &rateErr) {
+ if rateErr, ok := errors.AsType[*strava.RateLimitError](err); ok {
slog.Warn("Strava sync rate limited", "total", progress.Total, "imported", progress.Imported, "retryAfter", rateErr.RetryAfter, "isDaily", rateErr.IsDaily, "readDaily", fmt.Sprintf("%d/%d", rateErr.State.Read.UsageDaily, rateErr.State.Read.LimitDaily), "overallDaily", fmt.Sprintf("%d/%d", rateErr.State.Overall.UsageDaily, rateErr.State.Overall.LimitDaily))
enrichProgressWithState(&progress, rateErr.State)
_ = writeSyncEvent(w, flusher, "error", syncErrorEvent{
@@ -108,8 +107,7 @@ func (s *Server) handleSync(w http.ResponseWriter, r *http.Request) {
func (s *Server) syncRides(client syncClient, gpxDir string, from, to time.Time, report func(SyncProgress) error) (SyncProgress, error) {
activities, err := client.List(from, to)
if err != nil {
- var rateErr *strava.RateLimitError
- if errors.As(err, &rateErr) {
+ if rateErr, ok := errors.AsType[*strava.RateLimitError](err); ok {
slog.Warn("Strava sync rate limited while listing activities", "retryAfter", rateErr.RetryAfter, "isDaily", rateErr.IsDaily, "error", err)
}
return SyncProgress{}, err
@@ -138,8 +136,7 @@ func (s *Server) syncRides(client syncClient, gpxDir string, from, to time.Time,
}
activity, gpxData, err := client.Get(summary.ID)
if err != nil {
- var rateErr *strava.RateLimitError
- if errors.As(err, &rateErr) {
+ if rateErr, ok := errors.AsType[*strava.RateLimitError](err); ok {
slog.Warn("Strava sync rate limited", "activity", summary.ID, "name", summary.Name, "retryAfter", rateErr.RetryAfter, "isDaily", rateErr.IsDaily, "completed", progress.Completed, "total", progress.Total)
return progress, err
}
@@ -287,10 +284,7 @@ func rateLimitMessage(rateErr *strava.RateLimitError, progress SyncProgress) str
}
retryText := ""
if !rateErr.RetryAfter.IsZero() {
- until := time.Until(rateErr.RetryAfter).Truncate(time.Second)
- if until < 0 {
- until = 0
- }
+ until := max(time.Until(rateErr.RetryAfter).Truncate(time.Second), 0)
retryText = fmt.Sprintf(" Retry after %s (in %s).", rateErr.RetryAfter.UTC().Format(time.RFC3339), until)
if rateErr.IsDaily {
retryText = fmt.Sprintf(" Daily limit resets at %s (in %s).", rateErr.RetryAfter.UTC().Format(time.RFC3339), until)