servant-rawm-0.2.0.1: src/Servant/RawM/Internal/API.hs
{- |
Module : Servant.RawM.Internal.API
Copyright : Dennis Gosnell 2017
License : BSD3
Maintainer : Dennis Gosnell (cdep.illabout@gmail.com)
-}
module Servant.RawM.Internal.API where
import Data.Typeable (Typeable)
-- | Specialization of 'RawM'' to 'FileServer'. This can be used if you are
-- using 'Servant.RawM.serveDirectoryWebApp',
-- 'Servant.RawM.serveDirectoryFileServer', etc.
type RawM = RawM' FileServer
-- | This is a type to use to define a Servant API. It signifies a route that
-- allows embedding of a WAI 'Network.Wai.Application'. It is similar to
-- 'Servant.API.Raw.Raw', but it has a 'Servant.Server.HasServer' instance that
-- allows embedding of monadic effects. This should be more convenient than
-- 'Servant.API.Raw.Raw'.
--
-- The phantom type @serverType@ is used for defining the 'Servant.Docs.HasDocs'
-- instance. There are instances for 'Servant.Client.HasClient' and
-- 'Servant.Server.HasServer' for 'RawM'' with a polymorphic phantom type, but
-- there is only a 'Servant.Docs.HasDocs' instance specified for @'RawM''
-- 'FileServer'@. This allows the end-user to easily create a
-- 'Servant.Docs.HasDocs' instance for a custom 'Network.Wai.Application'.
data RawM' serverType deriving Typeable
-- | Used by 'RawM' as a phantom type.
data FileServer deriving Typeable