module RubiX.Types where
import Control.Monad.Reader
import Control.Monad.Except
import qualified Network.Wai as W
import qualified Data.Text as T
import qualified Data.Map as M
import qualified Data.CaseInsensitive as CI
type App a = ReaderT ReqContext (ExceptT W.Response IO) a
type Handler a = ReaderT ReqContext IO a
data ReqContext = ReqContext
{ requestBody :: T.Text
, request :: W.Request
}
runHandler :: Handler r -> App r
runHandler handler = ask >>= liftIO . runReaderT handler
type HeaderMap = M.Map (CI.CI T.Text) [T.Text]
type MultiQueryMap = M.Map T.Text [T.Text]
type QueryMap = M.Map T.Text T.Text
type ContentType = T.Text
type Pattern = T.Text
type Route = T.Text