{-# 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