-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A microframework based on monadic parsing -- -- Please see the README on GitHub at -- https://github.com/githubuser/okapi#readme @package okapi @version 0.1.0.2 module Okapi.EventSource class ToSSE a toSSE :: ToSSE a => a -> Event data Event Event :: Maybe Text -> Maybe Text -> ByteString -> Event [eventName] :: Event -> Maybe Text [eventID] :: Event -> Maybe Text [eventData] :: Event -> ByteString CommentEvent :: ByteString -> Event CloseEvent :: Event type EventSource = Chan Event newEventSource :: IO EventSource sendEvent :: EventSource -> Event -> IO () sendValue :: ToSSE a => EventSource -> a -> IO () eventSourceAppUnagiChan :: Chan Event -> Application instance GHC.Classes.Eq Okapi.EventSource.Event instance GHC.Show.Show Okapi.EventSource.Event module Okapi.Type type Path = [Text] type Headers = [Header] type QueryItem = (Text, Maybe Text) type Query = [QueryItem] data State State :: Request -> Bool -> Bool -> State [stateRequest] :: State -> Request [stateRequestMethodParsed] :: State -> Bool [stateRequestBodyParsed] :: State -> Bool data Request Request :: Method -> Path -> Query -> IO ByteString -> Headers -> Vault -> Request [requestMethod] :: Request -> Method [requestPath] :: Request -> Path [requestQuery] :: Request -> Query [requestBody] :: Request -> IO ByteString [requestHeaders] :: Request -> Headers [requestVault] :: Request -> Vault data Result ResultResponse :: Response -> Result ResultFile :: File -> Result ResultEventSource :: EventSource -> Result data File File :: Natural -> Headers -> FilePath -> File [fileStatus] :: File -> Natural [fileHeaders] :: File -> Headers [filePath] :: File -> FilePath data Response Response :: Natural -> Headers -> ByteString -> Response [responseStatus] :: Response -> Natural [responseHeaders] :: Response -> Headers [responseBody] :: Response -> ByteString data Failure Skip :: Failure Error :: Response -> Failure newtype OkapiT m a OkapiT :: ExceptT Failure (StateT State m) a -> OkapiT m a [unOkapiT] :: OkapiT m a -> ExceptT Failure (StateT State m) a type MonadOkapi m = (Functor m, Applicative m, Alternative m, Monad m, MonadPlus m, MonadIO m, MonadError Failure m, MonadState State m) instance GHC.Base.Monad m => Control.Monad.State.Class.MonadState Okapi.Type.State (Okapi.Type.OkapiT m) instance GHC.Base.Monad m => Control.Monad.Error.Class.MonadError Okapi.Type.Failure (Okapi.Type.OkapiT m) instance GHC.Base.Functor m => GHC.Base.Functor (Okapi.Type.OkapiT m) instance GHC.Base.Monad m => GHC.Base.Applicative (Okapi.Type.OkapiT m) instance GHC.Base.Monad m => GHC.Base.Alternative (Okapi.Type.OkapiT m) instance GHC.Base.Monad m => GHC.Base.Monad (Okapi.Type.OkapiT m) instance GHC.Base.Monad m => GHC.Base.MonadPlus (Okapi.Type.OkapiT m) instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (Okapi.Type.OkapiT m) instance Control.Monad.Reader.Class.MonadReader r m => Control.Monad.Reader.Class.MonadReader r (Okapi.Type.OkapiT m) instance Control.Monad.Trans.Class.MonadTrans Okapi.Type.OkapiT instance Control.Monad.Morph.MFunctor Okapi.Type.OkapiT module Okapi.Function runOkapi :: Monad m => (forall a. m a -> IO a) -> Int -> OkapiT m Result -> IO () runOkapiTLS :: Monad m => (forall a. m a -> IO a) -> TLSSettings -> Settings -> OkapiT m Result -> IO () makeOkapiApp :: Monad m => (forall a. m a -> IO a) -> OkapiT m Result -> Application get :: forall m. MonadOkapi m => m () post :: forall m. MonadOkapi m => m () head :: forall m. MonadOkapi m => m () put :: forall m. MonadOkapi m => m () delete :: forall m. MonadOkapi m => m () trace :: forall m. MonadOkapi m => m () connect :: forall m. MonadOkapi m => m () options :: forall m. MonadOkapi m => m () patch :: forall m. MonadOkapi m => m () -- | Parses a single path segment matching the given text and discards it seg :: forall m. MonadOkapi m => Text -> m () -- | Parses mutiple segments matching the order of the given list and -- discards them | TODO: Needs testing. May not have the correct behavior segs :: forall m. MonadOkapi m => [Text] -> m () -- | TODO: Change Read a constraint to custom typeclass or FromHTTPApiData -- | Parses a single seg segment, and returns the parsed seg segment as a -- value of the given type segParam :: forall a m. (MonadOkapi m, FromHttpApiData a) => m a segWith :: forall m. MonadOkapi m => (Text -> Bool) -> m () -- | Matches entire remaining path or fails path :: forall m. MonadOkapi m => [Text] -> m () -- | Parses a query parameter with the given name and returns the value as -- the given type queryParam :: forall a m. (MonadOkapi m, FromHttpApiData a) => Text -> m a queryFlag :: forall m. MonadOkapi m => Text -> m Bool header :: forall m. MonadOkapi m => HeaderName -> m Text auth :: forall m. MonadOkapi m => m Text basicAuth :: forall m. MonadOkapi m => m (Text, Text) bodyJSON :: forall a m. (MonadOkapi m, FromJSON a) => m a bodyForm :: forall a m. (MonadOkapi m, FromForm a) => m a okPlainText :: forall m. MonadOkapi m => Headers -> Text -> m Result okJSON :: forall a m. (MonadOkapi m, ToJSON a) => Headers -> a -> m Result okHTML :: forall m. MonadOkapi m => Headers -> ByteString -> m Result okLucid :: forall a m. (MonadOkapi m, ToHtml a) => Headers -> a -> m Result connectEventSource :: forall m. MonadOkapi m => EventSource -> m Result noContent :: forall a m. MonadOkapi m => Headers -> m Result file :: forall m. MonadOkapi m => Natural -> Headers -> FilePath -> m Result okFile :: forall m. MonadOkapi m => Headers -> FilePath -> m Result skip :: forall a m. MonadOkapi m => m a error :: forall a m. MonadOkapi m => Natural -> Headers -> ByteString -> m a error500 :: forall a m. MonadOkapi m => Headers -> ByteString -> m a error401 :: forall a m. MonadOkapi m => Headers -> ByteString -> m a error403 :: forall a m. MonadOkapi m => Headers -> ByteString -> m a error404 :: forall a m. MonadOkapi m => Headers -> ByteString -> m a error422 :: forall a m. MonadOkapi m => Headers -> ByteString -> m a -- | Execute the next parser even if the first one throws an Error error () :: MonadOkapi m => m a -> m a -> m a optionalError :: MonadOkapi m => m a -> m (Maybe a) optionError :: MonadOkapi m => a -> m a -> m a module Okapi newtype OkapiT m a OkapiT :: ExceptT Failure (StateT State m) a -> OkapiT m a [unOkapiT] :: OkapiT m a -> ExceptT Failure (StateT State m) a type MonadOkapi m = (Functor m, Applicative m, Alternative m, Monad m, MonadPlus m, MonadIO m, MonadError Failure m, MonadState State m) data Result