| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Servant.Server.Internal
Contents
- class HasServer api context (m :: * -> *) where
- type Server api context m = ServerT api context m
- captured :: FromHttpApiData a => proxy (Capture sym a) -> Text -> Maybe a
- allowedMethodHead :: Method -> Request -> Bool
- allowedMethod :: Method -> Request -> Bool
- processMethodRouter :: Maybe (ByteString, ByteString) -> Status -> Method -> Maybe [(HeaderName, ByteString)] -> Request -> RouteResult Response
- methodCheck :: MonadSnap m => Method -> Request -> DelayedM m ()
- acceptCheck :: (AllMime list, MonadSnap m) => Proxy list -> ByteString -> DelayedM m ()
- methodRouter :: (AllCTRender ctypes a, MonadSnap m) => Method -> Proxy ctypes -> Status -> Delayed m env (m a) -> Router m env
- methodRouterHeaders :: (GetHeaders (Headers h v), AllCTRender ctypes v, MonadSnap m) => Method -> Proxy ctypes -> Status -> Delayed m env (m (Headers h v)) -> Router m env
- data BasicAuthResult usr
- = Unauthorized
- | BadPassword
- | NoSuchUser
- | Authorized usr
- ct_wildcard :: ByteString
- module Servant.Server.Internal.PathInfo
- module Servant.Server.Internal.Router
- module Servant.Server.Internal.RoutingApplication
- module Servant.Server.Internal.ServantErr
Documentation
class HasServer api context (m :: * -> *) where Source #
Minimal complete definition
Methods
route :: MonadSnap m => Proxy api -> Context context -> Delayed m env (Server api context m) -> Router m env Source #
Instances
| HasServer * Raw context m Source # | Just pass the request to the underlying application and serve its response. Example: type MyApi = "images" :> Raw server :: Server MyApi server = serveDirectory "/var/www/images" |
| (HasServer * a ctx m, HasServer * b ctx m) => HasServer * ((:<|>) a b) ctx m Source # | A server for type MyApi = "books" :> Get '[JSON] [Book] -- GET /books
:<|> "books" :> ReqBody Book :> Post '[JSON] Book -- POST /books
server :: Server MyApi
server = listAllBooks :<|> postBook
where listAllBooks = ...
postBook book = ... |
| (HasServer k1 api context m, KnownSymbol realm, HasContextEntry context (BasicAuthCheck m usr)) => HasServer * ((:>) * k1 (BasicAuth realm usr) api) context m Source # | |
| HasServer k1 api context m => HasServer * ((:>) * k1 RemoteHost api) context m Source # | |
| HasServer k1 api context m => HasServer * ((:>) * k1 IsSecure api) context m Source # | |
| HasServer k1 api context m => HasServer * ((:>) * k1 HttpVersion api) context m Source # | |
| (AllCTUnrender list a, HasServer k1 sublayout context m) => HasServer * ((:>) * k1 (ReqBody * list a) sublayout) context m Source # | If you use All it asks is for a Example: type MyApi = "books" :> ReqBody '[JSON] Book :> Post '[JSON] Book
server :: Server MyApi
server = postBook
where postBook :: Book -> EitherT ServantErr IO Book
postBook book = ...insert into your db... |
| (KnownSymbol sym, HasServer k1 sublayout context m) => HasServer * ((:>) * k1 (QueryFlag sym) sublayout) context m Source # | If you use Example: type MyApi = "books" :> QueryFlag "published" :> Get '[JSON] [Book]
server :: Server MyApi
server = getBooks
where getBooks :: Bool -> EitherT ServantErr IO [Book]
getBooks onlyPublished = ...return all books, or only the ones that are already published, depending on the argument... |
| (KnownSymbol sym, FromHttpApiData a, HasServer k1 sublayout context m) => HasServer * ((:>) * k1 (QueryParams * sym a) sublayout) context m Source # | If you use This lets servant worry about looking up 0 or more values in the query string
associated to You can control how the individual values are converted from Example: type MyApi = "books" :> QueryParams "authors" Text :> Get '[JSON] [Book]
server :: Server MyApi
server = getBooksBy
where getBooksBy :: [Text] -> EitherT ServantErr IO [Book]
getBooksBy authors = ...return all books by these authors... |
| (KnownSymbol sym, FromHttpApiData a, HasServer k1 sublayout context m) => HasServer * ((:>) * k1 (QueryParam * sym a) sublayout) context m Source # | If you use This lets servant worry about looking it up in the query string
and turning it into a value of the type you specify, enclosed
in You can control how it'll be converted from Example: type MyApi = "books" :> QueryParam "author" Text :> Get '[JSON] [Book]
server :: Server MyApi
server = getBooksBy
where getBooksBy :: Maybe Text -> EitherT ServantErr IO [Book]
getBooksBy Nothing = ...return all books...
getBooksBy (Just author) = ...return books by the given author... |
| (KnownSymbol sym, FromHttpApiData a, HasServer k1 sublayout context m) => HasServer * ((:>) * k1 (Header sym a) sublayout) context m Source # | If you use All it asks is for a Example: newtype Referer = Referer Text
deriving (Eq, Show, FromText, ToText)
-- GET /view-my-referer
type MyApi = "view-my-referer" :> Header "Referer" Referer :> Get '[JSON] Referer
server :: Server MyApi
server = viewReferer
where viewReferer :: Referer -> EitherT ServantErr IO referer
viewReferer referer = return referer |
| (FromHttpApiData a, HasServer k1 sublayout context m) => HasServer * ((:>) * k1 (CaptureAll * capture a) sublayout) context m Source # | |
| (FromHttpApiData a, HasServer k1 sublayout context m) => HasServer * ((:>) * k1 (Capture * capture a) sublayout) context m Source # | If you use You can control how it'll be converted from Example: type MyApi = "books" :> Capture "isbn" Text :> Get '[JSON] Book
server :: Server MyApi
server = getBook
where getBook :: Text -> EitherT ServantErr IO Book
getBook isbn = ... |
| (KnownSymbol path, HasServer k1 sublayout context m) => HasServer * ((:>) Symbol k1 path sublayout) context m Source # | Make sure the incoming request starts with |
| (AllCTRender ctypes a, ReflectMethod k1 method, KnownNat status, GetHeaders (Headers h a)) => HasServer * (Verb k1 * method status ctypes (Headers h a)) context m Source # | |
| (AllCTRender ctypes a, ReflectMethod k1 method, KnownNat status) => HasServer * (Verb k1 * method status ctypes a) context m Source # | |
Instances
processMethodRouter :: Maybe (ByteString, ByteString) -> Status -> Method -> Maybe [(HeaderName, ByteString)] -> Request -> RouteResult Response Source #
acceptCheck :: (AllMime list, MonadSnap m) => Proxy list -> ByteString -> DelayedM m () Source #
methodRouter :: (AllCTRender ctypes a, MonadSnap m) => Method -> Proxy ctypes -> Status -> Delayed m env (m a) -> Router m env Source #
methodRouterHeaders :: (GetHeaders (Headers h v), AllCTRender ctypes v, MonadSnap m) => Method -> Proxy ctypes -> Status -> Delayed m env (m (Headers h v)) -> Router m env Source #
data BasicAuthResult usr Source #
Constructors
| Unauthorized | |
| BadPassword | |
| NoSuchUser | |
| Authorized usr |
Instances
| Functor BasicAuthResult Source # | |
| Eq usr => Eq (BasicAuthResult usr) Source # | |
| Read usr => Read (BasicAuthResult usr) Source # | |
| Show usr => Show (BasicAuthResult usr) Source # | |
| Generic (BasicAuthResult usr) Source # | |
| type Rep (BasicAuthResult usr) Source # | |