All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
WithDescription
does not clash between different fields with the same type.
- Debug log formatter
debugLogHandler
, customizable log middlewarelogMiddlewareCustom
.
- Add check for aeson 2, for GHC 9.2.5.
- Update imports to support
lens-aeson
>=1.2.
- Custom
swagger-ui
wrapper that allows to use BIOCAD's OIDC authorization from the UI. - Compatibility with
openapi3
3.2.0 and higher.
- Create OIDC config with provided tls manager.
- Pass access token to handlers.
- Possibility to accept Service Token in
OIDCAuth
. Token is considered a Service Token if it lacks theobject_guid
claim.preferred_username
claim is used as user id instead.
- Add a way to describe fields in Swagger schemas.
- Add default expiration time for OIDC discovery document and JWKS when provider does not set expiration.
- CBDINFRA-318: added OpenID Connect authorization support for servant;
- CBDINFRA-318: added role based authentication on top of OIDC.
- Move to
servant-swagger-ui-0.3.5.3.47.1
.
- Log user id for requests where it's set.
- Flush
stdout
after writing logs.
- Rewrite logging middleware: do not force reading the whole request before passing it to the application.
servant
support.
defaultHandleLog400
middleware to log response bodies of 4xx and 5xx responses.
- Ignore
"Warp: Client closed connection prematurely"
exception.
runWebServerWith
function that runs a web server with custom Warp settings.
warp
is configured to print exceptions tostdout
in json format;restartOnError
does not restart onCtrl-C
;defaultHandleLog
printsstatus
andurl
in separate json fields.
- Compilation with
--pedantic
.
- GitLab CI.
- Middleware which adds CORS header to every response.
throwJson
type is more polymorphic to matchthrowIO
and similar.
MonadWebError
type class withthrowJson
function.
- Added
toApplication
function - convert function from CustomWebServer to Application.
- Implement
restartOnError
, addpure
web monads.
- Customizable middleware, pretty default request logging.
- Processing of different versions for the same routes.
- Logging format. Now it is look like:
{"app":"scotty","msg":"GET /v1/ping 200","timestamp":0,"level":"INFO","datetime":"1970-01-01T00:00:00+0000"}
. TODO: use correct time.