    -- | Contains web handlers to serve files from a directory.
    --
    -- Example usage:
    --
    -- @
    -- {-# LANGUAGE OverloadedStrings #-}
    --
    -- module Main where
    --
    -- import "Snap.Core"           (Snap, route)
    -- import "Snap.Http.Server"    (quickHttpServe)
    -- import "Snap.Util.FileServe"
    --
    -- site :: Snap ()
    -- site = 'Snap.Core.route'
    --   [ (\"\/files\",   'serveDirectory'                            \"static\")
    --   , (\"\/simple\",  'serveDirectoryWith' 'simpleDirectoryConfig'  \"static\")
    --   , (\"\/default\", 'serveDirectoryWith' 'defaultDirectoryConfig' \"static\")
    --   , (\"\/fancy\",   'serveDirectoryWith' 'fancyDirectoryConfig'   \"static\")
    --   , (\"\/paper\",   'serveFile'                                 \"static\/paper.pdf\")
    --   , (\"\/thesis\",  'serveFileAs'        \"application\/pdf\"      \"static\/thesis.pdf\")
    --   ]
    --
    -- main :: IO ()
    -- main = 'Snap.Http.Server.quickHttpServe' site
    -- @
    module Snap.Util.FileServe
      ( -- * Helper functions
        getSafePath
        -- * Configuration for directory serving
      , MimeMap
      , HandlerMap
      , DirectoryConfig(..)
      , simpleDirectoryConfig
      , defaultDirectoryConfig
      , fancyDirectoryConfig
      , defaultIndexGenerator
      , defaultMimeTypes
      , fileType
        -- * File servers
      , serveDirectory
      , serveDirectoryWith
      , serveFile
      , serveFileAs
      ) where

    import           Snap.Internal.Util.FileServe (DirectoryConfig (..), HandlerMap, MimeMap, defaultDirectoryConfig, defaultIndexGenerator, defaultMimeTypes, fancyDirectoryConfig, fileType, getSafePath, serveDirectory, serveDirectoryWith, serveFile, serveFileAs, simpleDirectoryConfig)