hack-contrib-2009.8.16: src/Hack/Contrib/Middleware/ETag.hs
-- | Stolen from rack-contrib: Automatically sets the ETag header on all
-- String bodies
module Hack.Contrib.Middleware.ETag (etag) where
import Data.Digest.Pure.MD5
import Hack
import Hack.Contrib.Constants
import Hack.Contrib.Response
import MPS.Light
import Prelude hiding ((.), (^), (>), (-))
etag :: Middleware
etag app = \env -> do
r <- app env
if r.has_header _ETag
then r.return
else r.set_header _ETag (r.tag) .return
where
tag =
body
> md5
> show