{-# language DataKinds #-} {-# language OverloadedStrings #-} {-# language PartialTypeSignatures #-} {-# language TypeApplications #-} {-# language TypeFamilies #-} module Main where import qualified Data.Text.IO as Text import Mu.Rpc.Annotations import Mu.Rpc.Examples import Mu.Schema.Annotations import Mu.Servant.Server import Mu.Server import Network.Wai.Handler.Warp import Servant main :: IO () main = do putStrLn "running quickstart application" Text.putStrLn $ layout quickstartAPI run 8081 (serve quickstartAPI servantServer) servantServer :: _ servantServer = servantServerHandlers toHandler quickstartServer quickstartAPI :: Proxy _ quickstartAPI = packageAPI (quickstartServer @ServerErrorIO) type instance AnnotatedPackage ServantRoute QuickStartService = '[ 'AnnService "Greeter" ('ServantTopLevelRoute '["greet"]), 'AnnMethod "Greeter" "SayHello" ('ServantRoute '["say", "hello"] 'POST 200), 'AnnMethod "Greeter" "SayHi" ('ServantRoute '["say", "hi"] 'POST 200), 'AnnMethod "Greeter" "SayManyHellos" ('ServantRoute '["say", "many", "hellos"] 'POST 200) ] type instance AnnotatedSchema ServantContentTypes QuickstartSchema = '[ 'AnnType "HelloRequest" DefaultServantContentTypes, 'AnnType "HelloResponse" DefaultServantContentTypes, 'AnnType "HiRequest" DefaultServantContentTypes ]