Snider
|
da1839f730
|
feat(api): webhooks + sunset headers + WithWebSocket + cmd/api migration
- webhook.go: HMAC-SHA256 WebhookSigner matching PHP WebhookSignature —
sign/verify, X-Webhook-Signature / X-Webhook-Timestamp headers,
VerifyRequest middleware helper, 5-minute default tolerance,
secret generator (RFC §6)
- sunset.go: ApiSunsetWith(date, replacement, opts...) + WithSunsetNoticeURL;
ApiSunset now emits API-Suggested-Replacement when replacement set;
RouteDescription.NoticeURL surfaces API-Deprecation-Notice-URL (RFC §8)
- options.go + api.go + transport.go: WithWebSocket(gin.HandlerFunc)
alongside existing WithWSHandler(http.Handler); gin form wins when
both supplied (RFC §2.2)
- openapi.go: apiSuggestedReplacement + apiDeprecationNoticeURL as
reusable header components; NoticeURL on a RouteDescription flips
operation deprecated flag and emits response header doc
- cmd/api/*.go: migrated from Cobra (cli.NewCommand, StringFlag) to
new path-based CLI API (c.Command + core.Options.String/Int/Bool);
replaces the 1,422-line Cobra test suite with _Good/_Bad/_Ugly
triads on the new surface
- webhook_test.go + sunset_test.go + websocket_test.go: full coverage
Co-Authored-By: Virgil <virgil@lethean.io>
|
2026-04-14 14:51:04 +01:00 |
|
Snider
|
d90a5be936
|
refactor: AX compliance sweep — replace banned stdlib imports with core primitives
Replaced fmt, strings, sort, os, io, sync, encoding/json, path/filepath,
errors, log, reflect with core.Sprintf, core.E, core.Contains, core.Trim,
core.Split, core.Join, core.JoinPath, slices.Sort, c.Fs(), c.Lock(),
core.JSONMarshal, core.ReadAll and other CoreGO v0.8.0 primitives.
Framework boundary exceptions preserved where stdlib types are required
by external interfaces (Gin, net/http, CGo, Wails, bubbletea).
Co-Authored-By: Virgil <virgil@lethean.io>
|
2026-04-13 09:32:00 +01:00 |
|