úÎ0     None[ (ContentType is an alias for ByteString. 1The result of trying to decode a request entity. (Signifies an unsupported content type. YSignifies that the request entity is invalid, and provides some kind of reason why.!Successfully decoded the entity. HThe class of things that can be used to generate http message entities. (The content type of the respone entity. /The bytes associated with the response entity. ?The class of things that can be read as http message entities. <Decode the entity, according to the specified content type. >Logs all exceptions, and returns a 500 Internal Server error. ÿÙThis is useful because your wai framework won't always do what you expect when it encounters random exceptions. For instance, an exception thrown in IO may cause functionality of higher-level middlewares to be bypassed unless they know how to catch and re-throw exceptions (making them more complicated). This middleware explicitly will not re-throw exceptions, unless those exceptions were encountered after the headers have already been sent, e.g. when using .uWhat it will do is generate a unique id for the exception and print that ID, so you can easily find it in the logs. 1This request logger is better than the ones in , where "better" means:1) Operates in g. 2) Logs the start of a request separate from its completion. 3) Logs the duration of the request. Set the Server: header.           ,canteven-http-0.1.2.0-5mcGtHYsStdIFifukWecll Canteven.HTTP Network.Wai StreamingBodyNetwork.Wai.Middleware RequestLoggerControl.Monad.Logger MonadLogger ContentType DecodeResult Unsupported BadEntityOkToEntitygetContentTypegetBytes FromEntity decodeEntitylogExceptionsAndContinuerequestLogging setServer