servant-rawm-0.3.0.0: Embed a raw 'Application' in a Servant API

CopyrightDennis Gosnell 2017
LicenseBSD3
MaintainerDennis Gosnell (cdep.illabout@gmail.com)
Stabilityexperimental
Portabilityunknown
Safe HaskellNone
LanguageHaskell2010

Servant.RawM.Internal.Server

Contents

Description

This module exports HasServer instances for RawM', as well as some helper functions for serving directories of files.

Synopsis

Documentation

serveDirectoryWebApp :: Applicative m => FilePath -> ServerT (RawM' serverType) m Source #

Serve anything under the specified directory as a RawM' endpoint.

type MyApi = "static" :> RawM'

server :: ServerT MyApi m
server = serveDirectoryWebApp "/var/www"

would capture any request to /static/<something> and look for <something> under /var/www.

It will do its best to guess the MIME type for that file, based on the extension, and send an appropriate Content-Type header if possible.

If your goal is to serve HTML, CSS and Javascript files that use the rest of the API as a webapp backend, you will most likely not want the static files to be hidden behind a /static/ prefix. In that case, remember to put the serveDirectoryWebApp handler in the last position, because servant will try to match the handlers in order.

Corresponds to the defaultWebAppSettings StaticSettings value.

serveDirectoryWith :: Applicative m => StaticSettings -> ServerT (RawM' serverType) m Source #

Alias for staticApp. Lets you serve a directory with arbitrary StaticSettings. Useful when you want particular settings not covered by the four other variants. This is the most flexible method.

Orphan instances

HasServer (RawM' serverType :: *) context Source #

Creates a server instance like the following:

>>> :set -XTypeOperators
>>> import Data.Type.Equality ((:~:)(Refl))
>>> Refl :: ServerT (RawM' a) m :~: m Application
Refl
Instance details

Associated Types

type ServerT (RawM' serverType) m :: * #

Methods

route :: Proxy (RawM' serverType) -> Context context -> Delayed env (Server (RawM' serverType)) -> Router env #

hoistServerWithContext :: Proxy (RawM' serverType) -> Proxy context -> (forall x. m x -> n x) -> ServerT (RawM' serverType) m -> ServerT (RawM' serverType) n #