32 lines
700 B
Haskell
32 lines
700 B
Haskell
module Settings.Mime
|
|
( mimeMap
|
|
, mimeLookup
|
|
, mimeExtensions
|
|
, archiveTypes
|
|
, module Network.Mime
|
|
) where
|
|
|
|
import ClassyPrelude
|
|
|
|
import qualified Data.Map as Map
|
|
import qualified Data.Set as Set
|
|
|
|
import Network.Mime
|
|
( FileName, MimeType, MimeMap, Extension
|
|
, mimeByExt, defaultMimeType
|
|
)
|
|
import Network.Mime.TH
|
|
|
|
|
|
mimeMap :: MimeMap
|
|
mimeMap = $(mimeMapFile "config/mimetypes")
|
|
|
|
mimeLookup :: FileName -> MimeType
|
|
mimeLookup = mimeByExt mimeMap defaultMimeType
|
|
|
|
mimeExtensions :: MimeType -> Set Extension
|
|
mimeExtensions needle = Set.fromList [ ext | (ext, typ) <- Map.toList mimeMap, typ == needle ]
|
|
|
|
archiveTypes :: Set MimeType
|
|
archiveTypes = $(mimeSetFile "config/archive-types")
|