mu-grpc-client-0.3.0.0: src/Mu/GRpc/Client/Examples.hs
{-# language DataKinds #-}
{-# language TypeApplications #-}
{-# language TypeFamilies #-}
{-|
Description : Examples for gRPC clients
Look at the source code of this module.
-}
module Mu.GRpc.Client.Examples where
import Data.Conduit
import Data.Conduit.Combinators as C
import Data.Conduit.List (consume)
import qualified Data.Text as T
import Network.HTTP2.Client (HostName, PortNumber)
import Mu.Adapter.ProtoBuf
import Mu.GRpc.Client.TyApps
import Mu.Rpc.Examples
import Mu.Schema
type instance AnnotatedSchema ProtoBufAnnotation QuickstartSchema
= '[ 'AnnField "HelloRequest" "name" ('ProtoBufId 1 'True)
, 'AnnField "HelloResponse" "message" ('ProtoBufId 1 'True)
, 'AnnField "HiRequest" "number" ('ProtoBufId 1 'True) ]
sayHello' :: HostName -> PortNumber -> T.Text -> IO (GRpcReply T.Text)
sayHello' host port req
= do Right c <- setupGrpcClient' (grpcClientConfigSimple host port False)
fmap (\(HelloResponse r) -> r) <$> sayHello c (HelloRequest req)
sayHello :: GrpcClient -> HelloRequest -> IO (GRpcReply HelloResponse)
sayHello = gRpcCall @'MsgProtoBuf @QuickStartService @"Greeter" @"SayHello"
sayHi' :: HostName -> PortNumber -> Int -> IO [GRpcReply T.Text]
sayHi' host port n
= do Right c <- setupGrpcClient' (grpcClientConfigSimple host port False)
cndt <- sayHi c (HiRequest n)
runConduit $ cndt .| C.map (fmap (\(HelloResponse r) -> r)) .| consume
sayHi :: GrpcClient -> HiRequest -> IO (ConduitT () (GRpcReply HelloResponse) IO ())
sayHi = gRpcCall @'MsgProtoBuf @QuickStartService @"Greeter" @"SayHi"