servant-rawm-0.1.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 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 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 context Source # 

Associated Types

type ServerT RawM (context :: RawM) (m :: * -> *) :: * #

Methods

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