{-# LANGUAGE OverloadedStrings #-} module Network.Wai.Middleware.Debug (debug) where import Network.Wai (Middleware, requestMethod, requestHeaders, rawPathInfo, rawQueryString) import Data.ByteString.Char8 (unpack) import System.IO (hPutStrLn, stderr) import Control.Monad.IO.Class (liftIO) -- | Prints a message to 'stderr' for each request. debug :: Middleware debug app req = do liftIO $ hPutStrLn stderr $ concat [ unpack $ requestMethod req , " " , unpack $ rawPathInfo req , unpack $ rawQueryString req , "\n" , (++) "Accept: " $ maybe "" unpack $ lookup "Accept" $ requestHeaders req , "\n" ] app req