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 |
|