module Network.Wai.Application.Classic.Types where
import Data.ByteString (ByteString)
import qualified Data.ByteString.Lazy as BL (ByteString)
import qualified Network.HTTP.Client as H
import Network.HTTP.Date
import Network.Wai.Handler.Warp (FileInfo(..))
import Network.Wai.Application.Classic.Path
data ClassicAppSpec = ClassicAppSpec {
softwareName :: ByteString
, statusFileDir :: Path
}
data StatusInfo =
StatusByteString BL.ByteString
| StatusFile Path Integer
| StatusNone
deriving (Eq,Show)
data FileAppSpec = FileAppSpec {
indexFile :: Path
, isHTML :: Path -> Bool
}
data Fileinfo = Fileinfo {
fileinfoName :: !Path
, fileinfoSize :: !Integer
, fileinfoTime :: !HTTPDate
, fileinfoDate :: !ByteString
} deriving (Eq, Show)
fromFileInfo :: FileInfo -> Fileinfo
fromFileInfo x = Fileinfo {
fileinfoName = fromString $ fileInfoName x
, fileinfoSize = fileInfoSize x
, fileinfoTime = fileInfoTime x
, fileinfoDate = fileInfoDate x
}
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)
type Lang = Path -> Path