module Control.Monad.Pusher.HTTP (MonadHTTP(..)) where
import Control.Monad.Except (ExceptT)
import Control.Monad.Reader (ReaderT)
import Control.Monad.Trans.Class (lift)
import Network.HTTP.Client (Manager, Request, Response)
import qualified Data.ByteString.Lazy as BL
import qualified Network.HTTP.Client as HTTP.Client
class Monad m => MonadHTTP m where
httpLbs :: Request -> Manager -> m (Response BL.ByteString)
instance MonadHTTP IO where
httpLbs = HTTP.Client.httpLbs
instance MonadHTTP m => MonadHTTP (ReaderT r m) where
httpLbs req mngr = lift $ httpLbs req mngr
instance MonadHTTP m => MonadHTTP (ExceptT e m) where
httpLbs req mngr = lift $ httpLbs req mngr