{-# LANGUAGE OverloadedStrings #-} module Hack2.Contrib.RequestExtra where import Prelude () import Data.Maybe import Air.Env import Air.Extra import Data.ByteString.Char8 (ByteString) import Hack2 hiding (body) import Hack2.Contrib.Request import Hack2.Contrib.Utils import qualified Data.ByteString.Char8 as B media_type :: Env -> ByteString media_type env = case env.content_type.B.unpack.split "\\s*[;,]\\s*" of [] -> "" x:_ -> x.lower.B.pack media_type_params :: Env -> [(ByteString, ByteString)] media_type_params env | env.content_type.B.unpack.empty = [] | otherwise = env .content_type .B.unpack .split "\\s*[;,]\\s" .drop 1 .map (split "=") .select (length > is 2) .map tuple2 .map_fst (lower > B.pack) .map_snd (B.pack) content_charset :: Env -> ByteString content_charset env = env.media_type_params.lookup "charset" .fromMaybe ""