{-# OPTIONS -XExistentialQuantification -XTypeSynonymInstances -XFlexibleInstances -XDeriveDataTypeable -XOverloadedStrings #-} module MFlow.Wai.Response where import Network.Wai import MFlow.Cookies import Data.ByteString.Char8 as SB import Data.ByteString.Lazy.Char8 as B import MFlow import Data.Typeable import Data.Monoid import System.IO.Unsafe import Data.Map as M import Data.CaseInsensitive import Network.HTTP.Types import Control.Workflow(WFErrors(..)) --import Debug.Trace -- --(!>)= flip trace class ToResponse a where toResponse :: a -> Response data TResp = TRempty | forall a.ToResponse a=>TRespR a | forall a.(Typeable a, ToResponse a, Monoid a) => TResp a deriving Typeable instance Monoid TResp where mempty = TRempty mappend (TResp x) (TResp y)= case cast y of Just y' -> TResp $ mappend x y' Nothing -> error $ "fragment of type " ++ show ( typeOf y) ++ " after fragment of type " ++ show ( typeOf x) defaultResponse :: String -> IO Response defaultResponse msg= return . toResponse $ "
Page not found or error ocurred:
" ++ msg ++ "
home