-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A value level web framework -- -- A value level web framework in the style of servant @package eved @version 0.0.2.0 module Web.Eved.ContentType data ContentType a ContentType :: (a -> (RequestHeaders, ByteString)) -> ((RequestHeaders, ByteString) -> Either Text a) -> NonEmpty MediaType -> ContentType a [toContentType] :: ContentType a -> a -> (RequestHeaders, ByteString) [fromContentType] :: ContentType a -> (RequestHeaders, ByteString) -> Either Text a [mediaTypes] :: ContentType a -> NonEmpty MediaType json :: (FromJSON a, ToJSON a, Applicative f) => f (ContentType a) data WithHeaders a WithHeaders :: RequestHeaders -> a -> WithHeaders a addHeaders :: RequestHeaders -> a -> WithHeaders a withHeaders :: Functor f => f (ContentType a) -> f (ContentType (WithHeaders a)) acceptHeader :: NonEmpty (ContentType a) -> Header contentTypeHeader :: ContentType a -> Header collectMediaTypes :: (ContentType a -> MediaType -> b) -> NonEmpty (ContentType a) -> [b] chooseAcceptCType :: NonEmpty (ContentType a) -> ByteString -> Maybe (MediaType, a -> (RequestHeaders, ByteString)) chooseContentCType :: NonEmpty (ContentType a) -> RequestHeaders -> ByteString -> Maybe (ByteString -> Either Text a) module Web.Eved.Header data Header a Header :: (a -> Maybe ByteString) -> (Maybe ByteString -> Either Text a) -> Header a [toHeaderValue] :: Header a -> a -> Maybe ByteString [fromHeaderValue] :: Header a -> Maybe ByteString -> Either Text a auto :: (Applicative f, ToHttpApiData a, FromHttpApiData a) => f (Header a) maybe :: Functor f => f (Header a) -> f (Header (Maybe a)) module Web.Eved.QueryParam data QueryParam a QueryParam :: ([Text] -> Either Text a) -> (a -> [Text]) -> QueryParam a [fromQueryParam] :: QueryParam a -> [Text] -> Either Text a [toQueryParam] :: QueryParam a -> a -> [Text] auto :: (Applicative f, FromHttpApiData a, ToHttpApiData a) => f (QueryParam a) list :: Functor f => f (QueryParam a) -> f (QueryParam [a]) defaulted :: Functor f => a -> f (QueryParam a) -> f (QueryParam a) maybe :: Functor f => f (QueryParam a) -> f (QueryParam (Maybe a)) integer :: Applicative f => f (QueryParam Integer) text :: Applicative f => f (QueryParam Text) module Web.Eved.UrlElement data UrlElement a UrlElement :: (Text -> Either Text a) -> (a -> Text) -> UrlElement a [fromUrlPiece] :: UrlElement a -> Text -> Either Text a [toUrlPiece] :: UrlElement a -> a -> Text auto :: (FromHttpApiData a, ToHttpApiData a, Applicative f) => f (UrlElement a) integer :: Applicative f => f (UrlElement Integer) text :: Applicative f => f (UrlElement Text) module Web.Eved.Internal data (:<|>) a b (:<|>) :: a -> b -> (:<|>) a b infixl 4 :<|> infixl 4 :<|> class Eved api m | api -> m (.<|>) :: Eved api m => api a -> api b -> api (a :<|> b) lit :: Eved api m => Text -> api a -> api a capture :: Eved api m => Text -> UrlElement a -> api b -> api (a -> b) reqBody :: Eved api m => NonEmpty (ContentType a) -> api b -> api (a -> b) queryParam :: Eved api m => Text -> QueryParam a -> api b -> api (a -> b) header :: Eved api m => Text -> Header a -> api b -> api (a -> b) verb :: Eved api m => StdMethod -> Status -> NonEmpty (ContentType a) -> api (m a) module Web.Eved.Server data RequestData a BodyRequestData :: (ByteString -> Either Text a) -> RequestData a PureRequestData :: a -> RequestData a newtype EvedServerT m a EvedServerT :: ((forall a. m a -> IO a) -> [Text] -> RequestData a -> Application) -> EvedServerT m a [unEvedServerT] :: EvedServerT m a -> (forall a. m a -> IO a) -> [Text] -> RequestData a -> Application server :: (forall a. m a -> IO a) -> a -> EvedServerT m a -> Application data RoutingError PathError :: RoutingError CaptureError :: Text -> RoutingError HeaderParseError :: Text -> RoutingError QueryParamParseError :: Text -> RoutingError NoContentMatchError :: RoutingError NoAcceptMatchError :: RoutingError NoMethodMatchError :: RoutingError newtype UserApplicationError a UserApplicationError :: a -> UserApplicationError a serverErrorToResponse :: ServerError -> Response data ServerError ServerError :: Status -> ByteString -> [Header] -> ServerError [errorStatus] :: ServerError -> Status [errorBody] :: ServerError -> ByteString [errorHeaders] :: ServerError -> [Header] defaultErrorHandler :: SomeException -> ServerError instance GHC.Base.Functor Web.Eved.Server.RequestData instance GHC.Classes.Ord Web.Eved.Server.RoutingError instance GHC.Classes.Eq Web.Eved.Server.RoutingError instance GHC.Show.Show Web.Eved.Server.RoutingError instance GHC.Show.Show a => GHC.Show.Show (Web.Eved.Server.UserApplicationError a) instance GHC.Show.Show Web.Eved.Server.ServerError instance Web.Eved.Internal.Eved (Web.Eved.Server.EvedServerT m) m instance GHC.Exception.Type.Exception Web.Eved.Server.ServerError instance GHC.Exception.Type.Exception a => GHC.Exception.Type.Exception (Web.Eved.Server.UserApplicationError a) instance GHC.Exception.Type.Exception Web.Eved.Server.RoutingError module Web.Eved.Options provideOptions :: EvedOptions m a -> Middleware getOptionsResponse :: EvedOptions m a -> Request -> Response newtype EvedOptions (m :: * -> *) a EvedOptions :: ([Text] -> [StdMethod]) -> EvedOptions (m :: * -> *) a [getAvailableMethods] :: EvedOptions (m :: * -> *) a -> [Text] -> [StdMethod] passthrough :: EvedOptions m a -> EvedOptions m b instance Web.Eved.Internal.Eved (Web.Eved.Options.EvedOptions m) m module Web.Eved.Client newtype ClientM a ClientM :: ReaderT Manager IO a -> ClientM a [unClientM] :: ClientM a -> ReaderT Manager IO a runClientIO :: ClientM a -> IO a runClient :: (MonadIO m, MonadReader env m, HasHttpManager env) => ClientM a -> m a newtype EvedClient a EvedClient :: (Request -> a) -> EvedClient a [client] :: EvedClient a -> Request -> a getClient :: EvedClient a -> Text -> a instance Web.Eved.Internal.Eved Web.Eved.Client.EvedClient Web.Eved.Client.ClientM module Web.Eved.Auth auth :: (Eved api m, EvedAuth api, Applicative f) => NonEmpty (f (AuthScheme a)) -> f (api b) -> f (api (a -> b)) class EvedAuth api auth_ :: EvedAuth api => NonEmpty (AuthScheme a) -> api b -> api (a -> b) data AuthResult a AuthSuccess :: a -> AuthResult a AuthFailure :: Text -> AuthResult a AuthNeeded :: AuthResult a data AuthScheme a AuthScheme :: (Request -> IO (AuthResult a)) -> (a -> Request -> Request) -> AuthScheme a [authenticateRequest] :: AuthScheme a -> Request -> IO (AuthResult a) [addCredentials] :: AuthScheme a -> a -> Request -> Request data BasicAuth BasicAuth :: Text -> Text -> BasicAuth [basicAuthUsername] :: BasicAuth -> Text [basicAuthPassword] :: BasicAuth -> Text basicAuth :: AuthScheme BasicAuth instance Web.Eved.Auth.EvedAuth Web.Eved.Client.EvedClient instance Web.Eved.Auth.EvedAuth (Web.Eved.Server.EvedServerT m) module Web.Eved class Eved api m | api -> m data (:<|>) a b (:<|>) :: a -> b -> (:<|>) a b infixl 4 :<|> infixl 4 :<|> -- | A Segment seperator to be used between path segments akin to / in a -- url e.g. lit "hello" ./ capture "name" UE.text ./ get -- [CT.json @Text] (.) :: (Applicative f, Eved api m) => (f (api a) -> f (api b)) -> f (api a) -> f (api b) infixr 5 . -- | Combine two sub-api's by trying the left api first and then the right -- api second. (.<|>) :: (Eved api m, Applicative f) => f (api a) -> f (api b) -> f (api (a :<|> b)) -- | Add a Literal string to the path of the api lit :: (Eved api m, Applicative f) => Text -> f (api a) -> f (api a) -- | Add a url capture with a given name and UrlElement decoder/encoder capture :: (Eved api m, Applicative f) => Text -> f (UrlElement a) -> f (api b) -> f (api (a -> b)) -- | Add a request body parser for the given content types The Content-Type -- header will be examined to assist in content negotiation. reqBody :: (Eved api m, Applicative f) => NonEmpty (f (ContentType a)) -> f (api b) -> f (api (a -> b)) -- | A single query param that is required to exist. If the argument is not -- required use QP.maybe queryParam :: (Eved api m, Applicative f) => Text -> f (QueryParam a) -> f (api b) -> f (api (a -> b)) -- | The leaf node of most routes, this will specify the HTTP Verb and -- Status along with a list of ContentType encoder/decoders. The Allow -- header in the request will be examined to determine a suitable -- response Content-Type verb :: (Eved api m, Applicative f) => StdMethod -> Status -> NonEmpty (f (ContentType a)) -> f (api (m a)) -- | HTTP GET -- see verb for more info get :: (Eved api m, Applicative f) => NonEmpty (f (ContentType a)) -> f (api (m a)) -- | HTTP POST -- see verb for more info post :: (Eved api m, Applicative f) => NonEmpty (f (ContentType a)) -> f (api (m a)) -- | HTTP PUT -- see verb for more info put :: (Eved api m, Applicative f) => NonEmpty (f (ContentType a)) -> f (api (m a)) -- | HTTP PATCH -- see verb for more info patch :: (Eved api m, Applicative f) => NonEmpty (f (ContentType a)) -> f (api (m a)) -- | HTTP DELETE -- see verb for more info delete :: (Eved api m, Applicative f) => NonEmpty (f (ContentType a)) -> f (api (m a)) runClientIO :: ClientM a -> IO a runClient :: (MonadIO m, MonadReader env m, HasHttpManager env) => ClientM a -> m a -- | Unwrap an api that requires no context. If none of the combinators -- that were used required any context use this function to unwrap the -- api noContext :: Eved api m => Identity (api a) -> api a withContext :: Eved api m => ctx -> (ctx -> api a) -> api a data ClientM a data EvedServerT m a server :: (forall a. m a -> IO a) -> a -> EvedServerT m a -> Application