module Network.Wai.Application.Classic.Types where
import Data.ByteString (ByteString)
import qualified Data.ByteString.Lazy as BL (ByteString)
import qualified Network.HTTP.Conduit as H
import Network.HTTP.Date
import Network.HTTP.Types
import Network.Wai.Application.Classic.Path
import Network.Wai.Logger
data ClassicAppSpec = ClassicAppSpec {
softwareName :: ByteString
, logger :: ApacheLogger
, statusFileDir :: Path
}
data StatusInfo =
StatusByteString BL.ByteString
| StatusFile Path Integer
| StatusNone
deriving (Eq,Show)
data FileAppSpec = FileAppSpec {
indexFile :: Path
, isHTML :: Path -> Bool
, getFileInfo :: Path -> IO FileInfo
}
data FileInfo = FileInfo {
fileInfoName :: Path
, fileInfoSize :: Integer
, fileInfoTime :: HTTPDate
} deriving (Eq, Show)
data FileRoute = FileRoute {
fileSrc :: Path
, fileDst :: Path
} deriving (Eq,Show)
data RedirectRoute = RedirectRoute {
redirectSrc :: Path
, redirectDst :: Path
} deriving (Eq,Show)
data CgiAppSpec = CgiAppSpec {
indexCgi :: Path
} deriving (Eq,Show)
data CgiRoute = CgiRoute {
cgiSrc :: Path
, cgiDst :: Path
} deriving (Eq,Show)
data RevProxyAppSpec = RevProxyAppSpec {
revProxyManager :: H.Manager
}
data RevProxyRoute = RevProxyRoute {
revProxySrc :: Path
, revProxyDst :: Path
, revProxyDomain :: ByteString
, revProxyPort :: Int
} deriving (Eq,Show)
data RspSpec = RspSpec {
rspStatus :: Status
, rspBody :: RspBody
} deriving (Eq,Show)
data RspBody =
NoBody
| BodyStatus
| BodyFileNoBody ResponseHeaders
| BodyFile ResponseHeaders Path Range
deriving (Eq,Show)
data Range =
Entire Integer
| Part Integer Integer
deriving (Eq,Show)
type Lang = Path -> Path