module WASH.CGI.CGITypes where
import WASH.CGI.HTMLWrapper (WithHTML)
newtype URL = URL { unURL :: String }
data FileReference =
FileReference { fileReferenceName :: FilePath
, fileReferenceContentType :: String
, fileReferenceExternalName :: String
}
deriving (Show, Read)
data ResponseFileReference =
ResponseFileReference FilePath
data Status = Status { statusCode :: Int
, statusReason :: String
, statusContent :: Maybe (WithHTML () IO ())
}
newtype Location = Location URL
data FreeForm =
FreeForm { ffName :: String
, ffContentType :: String
, ffRawContents :: String
}
data CGIOption
= NoPort
| AutoPort
| Port Int
| NoHttps
| AutoHttps
| FullURL
| PartialURL
| SessionMode { unSessionMode :: SessionMode }
deriving (Eq, Show)
type CGIOptions = [CGIOption]
data SessionMode
= LogOnly
| StateIDOnly
| LogAndState
deriving (Eq, Show, Read, Bounded, Enum)
sessionNeedsLog :: SessionMode -> Bool
sessionNeedsLog LogOnly = True
sessionNeedsLog StateIDOnly = False
sessionNeedsLog LogAndState = True
sessionNeedsState :: SessionMode -> Bool
sessionNeedsState LogOnly = False
sessionNeedsState StateIDOnly = True
sessionNeedsState LogAndState = True