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