git.iko.soy/typeable/servant
on master help sign in
Add `instance HasServer EmptyAPI`
commit94483d586cf946f5b6b28e834f4ea14a94e0ec7f authorDavid Turner <dave.c.turner@gmail.com> dateTue 16 May 2017, 09:34 (9 years ago) parent8a16f47
3 files changed+23−2
doc/tutorial/Server.lhs+9 servant-server/src/Servant/Server.hs+2 servant-server/src/Servant/Server/Internal.hs+12−2
doc/tutorial/Server.lhs+9
@@ -1020,6 +1020,15 @@ serverFor = error "..."
10201020-- or the mailing list if you get stuck!
10211021```
10221022
1023+TODO prose
1024+
1025+``` haskell
1026+type CombinedAPI2 = CombinedAPI :<|> EmptyAPI
1027+
1028+server11 :: Server CombinedAPI2
1029+server11 = server10 :<|> emptyAPIServer
1030+```
1031+
10231032## Using another monad for your handlers
10241033
10251034Remember how `Server` turns combinators for HTTP methods into `Handler`? Well, actually, there's more to that. `Server` is actually a
servant-server/src/Servant/Server.hs+2
@@ -17,6 +17,8 @@ module Servant.Server
1717 , -- * Handlers for all standard combinators
1818 HasServer(..)
1919 , Server
20+ , EmptyAPIServer
21+ , emptyAPIServer
2022 , Handler (..)
2123 , runHandler
2224
servant-server/src/Servant/Server/Internal.hs+12−2
@@ -32,7 +32,7 @@ import Data.Maybe (fromMaybe, mapMaybe)
3232import Data.Either (partitionEithers)
3333import Data.String (fromString)
3434import Data.String.Conversions (cs, (<>))
35−import Data.Tagged (Tagged, untag)
35+import Data.Tagged (Tagged(..), untag)
3636import qualified Data.Text as T
3737import Data.Typeable
3838import GHC.TypeLits (KnownNat, KnownSymbol, natVal,
@@ -52,7 +52,7 @@ import Web.HttpApiData (FromHttpApiData, parseHeader,
5252 parseUrlPieceMaybe,
5353 parseUrlPieces)
5454import Servant.API ((:<|>) (..), (:>), BasicAuth, Capture,
55− CaptureAll, Verb,
55+ CaptureAll, Verb, EmptyAPI,
5656 ReflectMethod(reflectMethod),
5757 IsSecure(..), Header, QueryFlag,
5858 QueryParam, QueryParams, Raw,
@@ -532,6 +532,16 @@ instance HasServer api context => HasServer (HttpVersion :> api) context where
532532 route Proxy context subserver =
533533 route (Proxy :: Proxy api) context (passToServer subserver httpVersion)
534534
535+data EmptyAPIServer = EmptyAPIServer
536+
537+emptyAPIServer :: Server EmptyAPI
538+emptyAPIServer = Tagged EmptyAPIServer
539+
540+instance HasServer EmptyAPI context where
541+ type ServerT EmptyAPI m = Tagged m EmptyAPIServer
542+
543+ route Proxy _ _ = StaticRouter mempty mempty
544+
535545-- | Basic Authentication
536546instance ( KnownSymbol realm
537547 , HasServer api context