    {-# LANGUAGE CPP #-}
    -- | Automatically produce responses to HEAD requests based on the underlying
    -- applications GET response.
    module Network.Wai.Middleware.Autohead (autohead) where

    import Network.Wai
    #if __GLASGOW_HASKELL__ < 710
    import Data.Monoid (mempty)
    #endif

    autohead :: Middleware
    autohead app req sendResponse
        | requestMethod req == "HEAD" = app req { requestMethod = "GET" } $ \res -> do
            let (s, hs, _) = responseToStream res
            sendResponse $ responseBuilder s hs mempty
        | otherwise = app req sendResponse