webhooks: correct error case log format
webhooks: test error from delivery attempt
webhooks: add query validation function
The new function tests a query against a GraphQL schema and returns any
validation errors if they are found. This is useful for determining if a
GraphQL query will pass validation when creating a new webhook.
webhooks: refactor exec code into separate func
server: add server reference to context
webhooks: initial prototype for GQL-native webhooks
.builds/alpine.yml: upgrade to 3.14
auth: s/OAuth2Token/BearerToken/g
This also makes some tweaks to the organization of the crypto module to
make it easier for us to add more keys in the future, which will be
necessary for the internal token redesign.
auth: allow /query/metrics w/o authentication
auth: fix user type on database insert
auth: authenticate all requests under /query
database: panic on errors from Commit/Rollback
The previous change would eat the error from fn(tx); in truth we should
ensure that it is returned to the caller. This panics instead if an
error occurs during Commit or Rollback. I'm not sure of what scenarios
would cause this to occur, but they all probably deserve further
investigation - a panic will raise it to our attention.
database: handle Commit/Rollback errors
Add debugging command to decode OAuth tokens
Various bug fixes per pages.sr.ht
database: expand field map for composite fields
This allows models to fetch multiple SQL columns to obtain the data
necessary to compute a single composite GraphQL field, while still
avoiding unnecessary fetches if those fields are not queried.
crypto: harden API surface
Make it explicit that expiration is not being tested with Decrypt, and
test that the expiration is meaningful with DecryptWithExpiration.
client: add config option to override API origin
If the config file contains an "api-origin" key for a service, prefer it
instead of "origin". This allows users to directly point the Python
frontend to the Go backend for local development, without having to
setup a reverse proxy.
This is the Go port of [1].
While at it, use GetOrigin for symmetry with the Python code.
[1]: https://git.sr.ht/~sircmpwn/meta.sr.ht/commit/6c2ee03923fe65423a2c55e6648f555c08db827a
Fix bug with internal authentication