{-# LANGUAGE CPP #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TypeFamilies #-}
module Servant.Server
(
serveSnap
,
HasServer(..)
, Server
, ServantErr(..)
, throwError
, err300
, err301
, err302
, err303
, err304
, err305
, err307
, err400
, err401
, err402
, err403
, err404
, err405
, err406
, err407
, err409
, err410
, err411
, err412
, err413
, err414
, err415
, err416
, err417
, err500
, err501
, err502
, err503
, err504
, err505
) where
import Data.Proxy (Proxy(..))
import Servant.Server.Internal
import Servant.Server.Internal.SnapShims
import Snap.Core hiding (route)
serveApplication
:: forall layout m.(HasServer layout, MonadSnap m)
=> Proxy layout
-> Server layout m
-> Application m
serveApplication p server = toApplication (runRouter (route p (emptyDelayed (Proxy :: Proxy (m :: * -> *)) ((Route server)))))
serveSnap
:: forall layout m.(HasServer layout, MonadSnap m)
=> Proxy layout
-> Server layout m
-> m ()
serveSnap p server = applicationToSnap $ serveApplication p server