module Chu2.FFI where import Data.ByteString (ByteString) data RequestMethod = OPTIONS | GET | HEAD | POST | PUT | DELETE | TRACE | CONNECT deriving (Show, Read, Eq) data Status = OK | Created | Accepted | NoContent | MultipleChoices | MovedPermanently | SeeOther | NotModified | MovedTemporarily | BadRequest | Unauthorized | Forbidden | NotFound | MethodNotAllowed | NotAcceptable | Conflict | Gone | PreconditionFailed | RequestEntityTooLarge | RequestURItooLong | UnsupportedMediaType | NotImplemented | ServiceUnavailable deriving (Show) type Field = String type Headers = [Header] type Header = (,) Field Field type Chu2Errors = Field -> IO () data Chu2UrlScheme = HTTP | HTTPS deriving (Show) data Env = Env { requestMethod :: RequestMethod , scriptName :: Field , pathInfo :: Field , queryString :: Field , serverName :: Field , serverPort :: Field , httpHeaders :: Headers , chu2UrlScheme :: Chu2UrlScheme , chu2Input :: Field , chu2Errors :: Chu2Errors , chu2Headers :: Headers } data Response = Response { status :: Status , headers :: Headers , body :: Field } deriving (Show)