X-Git-Url: https://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=Rakka%2FUtils.hs;h=0fddc6d64127baf25a1e5adbe19b58b5e758d039;hb=bc8616eec0bcac3102860c76f93ebfd0da24c2d6;hp=9eb667c115971c10d816f0176e8d9bda2b4a1632;hpb=9ff4eb243ae1545c62a5ab2eaf8dcb2f7c40b20d;p=Rakka.git diff --git a/Rakka/Utils.hs b/Rakka/Utils.hs index 9eb667c..0fddc6d 100644 --- a/Rakka/Utils.hs +++ b/Rakka/Utils.hs @@ -4,11 +4,17 @@ module Rakka.Utils , maybeA , deleteIfEmpty , chomp + , guessMIMEType ) where import Control.Arrow import Control.Arrow.ArrowList +import qualified Data.ByteString.Lazy as Lazy (ByteString) +import qualified Data.ByteString.Lazy.Char8 as L8 hiding (ByteString) +import Magic +import Network.HTTP.Lucu +import System.IO.Unsafe yesOrNo :: Bool -> String @@ -41,3 +47,13 @@ deleteIfEmpty chomp :: String -> String chomp = reverse . snd . break (/= '\n') . reverse + + +guessMIMEType :: Lazy.ByteString -> MIMEType +guessMIMEType = read . unsafePerformIO . magicString magic . L8.unpack + where + magic :: Magic + magic = unsafePerformIO + $ do m <- magicOpen [MagicMime] + magicLoadDefault m + return m