{-# LANGUAGE OverloadedStrings #-} -- | Automatically produce responses to HEAD requests based on the underlying -- applications GET response. module Network.Wai.Middleware.Autohead (autohead) where import Network.Wai import Data.Monoid (mempty) import Data.Enumerator (enumEOF, ($$)) autohead :: Middleware autohead app req | requestMethod req == "HEAD" = do res <- app req { requestMethod = "GET" } case res of ResponseFile s hs _ _ -> return $ ResponseBuilder s hs mempty ResponseBuilder s hs _ -> return $ ResponseBuilder s hs mempty ResponseEnumerator e -> do let helper f = let helper' s hs = enumEOF $$ f s hs in e helper' return $ ResponseEnumerator helper | otherwise = app req