~bigbes/core-go

ref: 1063e5b6eca536af07040ba929e872c3fc256444 core-go/webhooks/queue.go -rw-r--r-- 7.6 KiB
cd878493 — Conrad Hoffmann 2 years ago
webhooks: skip webhooks with expired credentials

The documentation states [1]:

> When the original authentication method becomes invalid (such as the
> expiration of or revocation of an OAuth 2.0 bearer token), the
> webhook is disabled.

However, this is currently not the case. Expired webhooks are indeed
filtered out in virtually all GraphQL queries (by means of core-go's
FilterWebhooks [2]), so users cannot see or delete them. They are _not_
filtered out upon scheduling, however. This commit fixes that.

The symptoms of this are that active webhooks may simply not be run - if
a user has both an expired and a valid, active webhook for some event,
the scheduling will retrieve both, fail on the expired one, and stop
processing, without any feedback to the user who scheduled the hooks.

This is a problem across all services, so core-go seems like the best
place to fix this.

[1]: https://man.sr.ht/graphql.md#webhook-authentication
[2]: https://git.sr.ht/~sircmpwn/core-go/tree/master/item/webhooks/config.go#L74,81
7d6b202a — Adnan Maolood 4 years ago
webhooks: Execute GraphQL queries synchronously

Execute GraphQL webhook queries synchronously instead of in a background
task to avoid race conditions.
f44afb10 — Simon Ser 4 years ago
go fmt
48250772 — Simon Ser 4 years ago
Remove %e formatting verbs

%e is not valid for formatting error values:

> %e	scientific notation, e.g. -1.234456e+78

Instead, use %w when using fmt.Errorf (for error wrapping) and
%v when using log.Printf (%w is not valid in that context).
cdb177bb — Drew DeVault 4 years ago
(*WebhookQueue).deliverPayload: address error nit

This return does not need to be here.
99671f85 — Drew DeVault 4 years ago
webhooks: add comment clarifying field usage
07f694d2 — Drew DeVault 4 years ago
webhooks: expand auth configuration

The purpose of this change is to enable internal webhooks to be
configured in GQL webhook tables. A webhook subscription now includes
the auth method field which is appropriate, which is limited to either
OAUTH2 or INTERNAL. In the former case, the previous set of fields will
be valid, and in the latter case, the NodeID field will be valid. This
will allow us to register webhook subscriptions for internal use.
6c80f878 — Drew DeVault 5 years ago
webhooks: correct error case log format
3eaac6aa — Drew DeVault 5 years ago
webhooks: test error from delivery attempt
f500157c — Drew DeVault 5 years ago
webhooks: refactor exec code into separate func
8bd6005b — Drew DeVault 5 years ago
webhooks: initial prototype for GQL-native webhooks