{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE InstanceSigs #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Servant.RawM.Client (
module Servant.RawM
) where
import Data.Proxy (Proxy (Proxy))
import Servant.Client.Core (Client,
HasClient (clientWithRoute, hoistClientMonad),
Request, Response, RunClient)
import Servant.Client.Core.RunClient (runRequest)
import Servant.RawM
instance RunClient m => HasClient m (RawM' serverType) where
type Client m (RawM' serverType) = (Request -> Request) -> m Response
clientWithRoute
:: Proxy m
-> Proxy (RawM' serverType)
-> Request
-> Client m (RawM' serverType)
clientWithRoute :: Proxy m
-> Proxy (RawM' serverType)
-> Request
-> Client m (RawM' serverType)
clientWithRoute Proxy m
Proxy Proxy (RawM' serverType)
Proxy Request
req Request -> Request
reqFunc = Request -> m Response
forall (m :: * -> *). RunClient m => Request -> m Response
runRequest (Request -> m Response) -> Request -> m Response
forall a b. (a -> b) -> a -> b
$ Request -> Request
reqFunc Request
req
hoistClientMonad
:: Proxy m
-> Proxy (RawM' serverType)
-> (forall x. mon x -> mon' x)
-> Client mon (RawM' serverType)
-> Client mon' (RawM' serverType)
hoistClientMonad :: Proxy m
-> Proxy (RawM' serverType)
-> (forall x. mon x -> mon' x)
-> Client mon (RawM' serverType)
-> Client mon' (RawM' serverType)
hoistClientMonad Proxy m
Proxy Proxy (RawM' serverType)
Proxy forall x. mon x -> mon' x
f Client mon (RawM' serverType)
cl = mon Response -> mon' Response
forall x. mon x -> mon' x
f (mon Response -> mon' Response)
-> ((Request -> Request) -> mon Response)
-> (Request -> Request)
-> mon' Response
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Client mon (RawM' serverType)
(Request -> Request) -> mon Response
cl