{-# LANGUAGE NoMonomorphismRestriction #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE Rank2Types #-} {-# LANGUAGE TypeApplications #-} {-# OPTIONS_GHC -fno-warn-orphans #-} {-# OPTIONS_GHC -Wno-missing-signatures #-} module Main where import Data.Maybe (fromJust) import qualified Control.Monad.Classes as MC import qualified Network.HTTP.Client as Client import qualified Pipes as P import Symantic.HTTP import Symantic.HTTP.Client import Symantic.HTTP.Pipes () import API (api) -- | Derive the callers of the client. client_succ :!: client_countdown = client api main :: IO () main = do manager <- Client.newManager Client.defaultManagerSettings let baseURI = fromJust $ parseURI "http://localhost:8080" let env = clientEnv manager baseURI print =<< runClient env (client_succ 42) (print =<<) $ runClientStream env (client_countdown 4) $ \pipe -> P.runEffect $ P.for pipe $ \i -> MC.exec @IO $ print i