git.iko.soy/typeable/servant
on master help sign in
examples: add GS7
commitc892aae429461d66192ee16287325591c8814d4e authorAlp Mestanogullari <alpmestan@gmail.com> dateWed 6 May 2015, 19:01 (11 years ago) parentec95cb0
2 files changed+35
servant-examples/getting-started/GS7.hs+33 servant-examples/getting-started/getting-started.hs+2
servant-examples/getting-started/GS7.hsnew file+33
@@ -0,0 +1,33 @@
1+{-# LANGUAGE DataKinds #-}
2+{-# LANGUAGE TypeFamilies #-}
3+{-# LANGUAGE TypeOperators #-}
4+module GS7 where
5+
6+import Control.Monad.Trans.Either
7+import Control.Monad.Trans.Reader
8+import Network.Wai
9+import Servant
10+
11+type ReaderAPI = "a" :> Get '[JSON] Int
12+ :<|> "b" :> Get '[JSON] String
13+
14+readerAPI :: Proxy ReaderAPI
15+readerAPI = Proxy
16+
17+readerServerT :: ServerT ReaderAPI (Reader String)
18+readerServerT = a :<|> b
19+
20+ where a :: Reader String Int
21+ a = return 1797
22+
23+ b :: Reader String String
24+ b = ask
25+
26+readerServer :: Server ReaderAPI
27+readerServer = enter readerToEither readerServerT
28+
29+ where readerToEither :: Reader String :~> EitherT ServantErr IO
30+ readerToEither = Nat $ \r -> return (runReader r "hi")
31+
32+app :: Application
33+app = serve readerAPI readerServer
servant-examples/getting-started/getting-started.hs+2
@@ -8,6 +8,7 @@ import qualified GS3
88import qualified GS4
99import qualified GS5
1010import qualified GS6
11+import qualified GS7
1112
1213app :: String -> Maybe Application
1314app n = case n of
@@ -17,6 +18,7 @@ app n = case n of
1718 "4" -> Just GS4.app
1819 "5" -> Just GS5.app
1920 "6" -> Just GS6.app
21+ "7" -> Just GS7.app
2022 _ -> Nothing
2123
2224main :: IO ()