feat(auth): AuthenticateContext + InvalidateToken for long-running syncs
Adds two helpers tailored for cron-driven or watcher-style clients: - AuthenticateContext(ctx) — cancellable variant of Authenticate(). Bypasses the non-context Query() path and POSTs /api/2.0/authentication.json directly, so a stalled auth call never outlives the caller's deadline. - InvalidateToken() — zeroes the cached *Token. Next request (or Authenticate*) forces a fresh auth. Intended for mid-sync 401 recovery when the server has revoked/rotated the session while local Expires still looks fresh. Plain Authenticate() is unchanged; it remains a convenience wrapper. Unit tests cover cache-hit, forced refresh, and context-cancellation paths. Refs eSlider/inventar-sync#3, ASR-0008. Made-with: Cursor
This commit is contained in:
@@ -6,6 +6,22 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.3.1] - 2026-04-24
|
||||
|
||||
### Added
|
||||
|
||||
- `AuthenticateContext(ctx)` — context-aware auth that honours cancellation and
|
||||
deadlines. Preferred entry point for long-running syncs (cron, watchers).
|
||||
- `InvalidateToken()` — clears the cached token to force re-auth on the next
|
||||
request. Use this to recover from a mid-sync 401 when the server has revoked
|
||||
the session while the local `Expires` timestamp still looks fresh.
|
||||
|
||||
### Notes
|
||||
|
||||
- Plain `Authenticate()` is unchanged and remains a convenience wrapper around
|
||||
`AuthenticateContext(context.Background())`.
|
||||
- No breaking changes; a patch release.
|
||||
|
||||
## [0.3.0] - 2026-04-24
|
||||
|
||||
### Added
|
||||
|
||||
Reference in New Issue
Block a user