examples: add GS7
This commit is contained in:
parent
ec95cb0355
commit
c892aae429
2 changed files with 35 additions and 0 deletions
33
servant-examples/getting-started/GS7.hs
Normal file
33
servant-examples/getting-started/GS7.hs
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
{-# LANGUAGE DataKinds #-}
|
||||||
|
{-# LANGUAGE TypeFamilies #-}
|
||||||
|
{-# LANGUAGE TypeOperators #-}
|
||||||
|
module GS7 where
|
||||||
|
|
||||||
|
import Control.Monad.Trans.Either
|
||||||
|
import Control.Monad.Trans.Reader
|
||||||
|
import Network.Wai
|
||||||
|
import Servant
|
||||||
|
|
||||||
|
type ReaderAPI = "a" :> Get '[JSON] Int
|
||||||
|
:<|> "b" :> Get '[JSON] String
|
||||||
|
|
||||||
|
readerAPI :: Proxy ReaderAPI
|
||||||
|
readerAPI = Proxy
|
||||||
|
|
||||||
|
readerServerT :: ServerT ReaderAPI (Reader String)
|
||||||
|
readerServerT = a :<|> b
|
||||||
|
|
||||||
|
where a :: Reader String Int
|
||||||
|
a = return 1797
|
||||||
|
|
||||||
|
b :: Reader String String
|
||||||
|
b = ask
|
||||||
|
|
||||||
|
readerServer :: Server ReaderAPI
|
||||||
|
readerServer = enter readerToEither readerServerT
|
||||||
|
|
||||||
|
where readerToEither :: Reader String :~> EitherT ServantErr IO
|
||||||
|
readerToEither = Nat $ \r -> return (runReader r "hi")
|
||||||
|
|
||||||
|
app :: Application
|
||||||
|
app = serve readerAPI readerServer
|
|
@ -8,6 +8,7 @@ import qualified GS3
|
||||||
import qualified GS4
|
import qualified GS4
|
||||||
import qualified GS5
|
import qualified GS5
|
||||||
import qualified GS6
|
import qualified GS6
|
||||||
|
import qualified GS7
|
||||||
|
|
||||||
app :: String -> Maybe Application
|
app :: String -> Maybe Application
|
||||||
app n = case n of
|
app n = case n of
|
||||||
|
@ -17,6 +18,7 @@ app n = case n of
|
||||||
"4" -> Just GS4.app
|
"4" -> Just GS4.app
|
||||||
"5" -> Just GS5.app
|
"5" -> Just GS5.app
|
||||||
"6" -> Just GS6.app
|
"6" -> Just GS6.app
|
||||||
|
"7" -> Just GS7.app
|
||||||
_ -> Nothing
|
_ -> Nothing
|
||||||
|
|
||||||
main :: IO ()
|
main :: IO ()
|
||||||
|
|
Loading…
Reference in a new issue