module Hack2.Contrib.Middleware.UserMime (user_mime) where
import Data.List (find)
import Hack2
import Hack2.Contrib.Response
import Hack2.Contrib.Utils
import Air.Light
import Prelude hiding ((.), ())
import qualified Data.ByteString.Char8 as B
import Data.ByteString.Char8 (ByteString)
user_mime :: [(ByteString, ByteString)] -> Middleware
user_mime h app env = do
r <- app env
case h.only_fst.find mime >>= flip lookup h of
Nothing -> return r
Just v -> return r.set_content_type v
where mime x = env.path_info.B.unpack.ends_with ('.' : x.B.unpack)