{-# OPTIONS_GHC -Wno-redundant-constraints #-}
module Effectful.HTTP.Client.Dynamic
(
Network (..),
runNetwork,
newManager,
newTlsManager,
newTlsManagerWith,
applyDigestAuth,
BodyReader,
withResponse,
withResponseHistory,
brRead,
brReadSome,
brConsume,
readResponseJson,
readResponseUtf8,
readResponse,
NetworkStatusE (..),
NetworkReadBodyE (..),
NetworkDecodeUtf8E (..),
NetworkDecodeJsonE (..),
ManagerSettings,
Manager,
Request,
Response,
)
where
import Control.Monad.Catch (MonadThrow)
import Data.Aeson (FromJSON)
import Data.ByteString (ByteString)
import Data.ByteString.Lazy (LazyByteString)
import Data.Text (Text)
import Effectful
( Dispatch (Dynamic),
DispatchOf,
Eff,
Effect,
IOE,
UnliftStrategy (SeqUnlift),
type (:>),
)
import Effectful.Dispatch.Dynamic
( localLiftUnlift,
localSeqUnlift,
reinterpret,
send,
)
import Effectful.Dynamic.Utils (ShowEffect (showEffectCons))
import Effectful.HTTP.Client.Internal
( NetworkDecodeJsonE (MkNetworkDecodeJsonE),
NetworkDecodeUtf8E (MkNetworkDecodeUtf8E),
NetworkReadBodyE (MkNetworkReadBodyE),
NetworkStatusE (MkNetworkStatusE),
)
import Effectful.HTTP.Client.Internal qualified as Internal
import Effectful.HTTP.Client.Static qualified as Static
import GHC.Stack.Types (HasCallStack)
import Network.HTTP.Client
( HistoriedResponse,
Manager,
ManagerSettings,
Request,
Response,
)
type instance DispatchOf Network = Dynamic
data Network :: Effect where
NewManager :: ManagerSettings -> Network m Manager
NewTlsManager :: Network m Manager
NewTlsManagerWith :: ManagerSettings -> Network m Manager
ApplyDigestAuth ::
forall m n.
(MonadThrow n) =>
ByteString ->
ByteString ->
Request ->
Manager ->
Network m (n Request)
WithResponse ::
Request ->
Manager ->
(Response (BodyReader m) -> m a) ->
Network m a
WithResponseHistory ::
Request ->
Manager ->
(HistoriedResponse (BodyReader m) -> m a) ->
Network m a
BrRead :: BodyReader m -> Network m ByteString
BrReadSome :: BodyReader m -> Int -> Network m LazyByteString
BrConsume :: BodyReader m -> Network m [ByteString]
type BodyReader m = m ByteString
instance ShowEffect Network where
showEffectCons :: forall (m :: * -> *) a. Network m a -> String
showEffectCons = \case
NewManager ManagerSettings
_ -> String
"NewManager"
Network m a
NewTlsManager -> String
"NewTlsManager"
NewTlsManagerWith ManagerSettings
_ -> String
"NewTlsManagerWith"
ApplyDigestAuth {} -> String
"ApplyDigestAuth"
WithResponse {} -> String
"WithResponse"
WithResponseHistory {} -> String
"WithResponseHistory"
BrRead BodyReader m
_ -> String
"BrRead"
BrReadSome {} -> String
"BrReadSome"
BrConsume BodyReader m
_ -> String
"BrConsume"
runNetwork ::
forall a es.
( HasCallStack,
IOE :> es
) =>
Eff (Network : es) a ->
Eff es a
runNetwork :: forall a (es :: [(* -> *) -> * -> *]).
(HasCallStack, IOE :> es) =>
Eff (Network : es) a -> Eff es a
runNetwork = (Eff (Network : es) a -> Eff es a)
-> EffectHandler Network (Network : es)
-> Eff (Network : es) a
-> Eff es a
forall (e :: (* -> *) -> * -> *)
(handlerEs :: [(* -> *) -> * -> *]) a (es :: [(* -> *) -> * -> *])
b.
(HasCallStack, DispatchOf e ~ 'Dynamic) =>
(Eff handlerEs a -> Eff es b)
-> EffectHandler e handlerEs -> Eff (e : es) a -> Eff es b
reinterpret Eff (Network : es) a -> Eff es a
forall a (es :: [(* -> *) -> * -> *]).
(HasCallStack, IOE :> es) =>
Eff (Network : es) a -> Eff es a
Static.runNetwork (EffectHandler Network (Network : es)
-> Eff (Network : es) a -> Eff es a)
-> EffectHandler Network (Network : es)
-> Eff (Network : es) a
-> Eff es a
forall a b. (a -> b) -> a -> b
$ \LocalEnv localEs
env -> \case
NewManager ManagerSettings
s -> ManagerSettings -> Eff (Network : es) Manager
forall (es :: [(* -> *) -> * -> *]).
(HasCallStack, Network :> es) =>
ManagerSettings -> Eff es Manager
Static.newManager ManagerSettings
s
Network (Eff localEs) a
NewTlsManager -> Eff (Network : es) a
Eff (Network : es) Manager
forall (es :: [(* -> *) -> * -> *]).
(HasCallStack, Network :> es) =>
Eff es Manager
Static.newTlsManager
NewTlsManagerWith ManagerSettings
s -> ManagerSettings -> Eff (Network : es) Manager
forall (es :: [(* -> *) -> * -> *]).
(HasCallStack, Network :> es) =>
ManagerSettings -> Eff es Manager
Static.newTlsManagerWith ManagerSettings
s
ApplyDigestAuth ByteString
b1 ByteString
b2 Request
r Manager
m -> ByteString
-> ByteString
-> Request
-> Manager
-> Eff (Network : es) (n Request)
forall (n :: * -> *) (es :: [(* -> *) -> * -> *]).
(HasCallStack, MonadThrow n, Network :> es) =>
ByteString
-> ByteString -> Request -> Manager -> Eff es (n Request)
Static.applyDigestAuth ByteString
b1 ByteString
b2 Request
r Manager
m
WithResponse Request
r Manager
m Response (BodyReader (Eff localEs)) -> Eff localEs a
k -> LocalEnv localEs
-> UnliftStrategy
-> ((forall r. Eff (Network : es) r -> Eff localEs r)
-> (forall r. Eff localEs r -> Eff (Network : es) r)
-> Eff (Network : es) a)
-> Eff (Network : es) a
forall (localEs :: [(* -> *) -> * -> *])
(es :: [(* -> *) -> * -> *]) a.
HasCallStack =>
LocalEnv localEs
-> UnliftStrategy
-> ((forall r. Eff es r -> Eff localEs r)
-> (forall r. Eff localEs r -> Eff es r) -> Eff es a)
-> Eff es a
localLiftUnlift LocalEnv localEs
env UnliftStrategy
SeqUnlift (((forall r. Eff (Network : es) r -> Eff localEs r)
-> (forall r. Eff localEs r -> Eff (Network : es) r)
-> Eff (Network : es) a)
-> Eff (Network : es) a)
-> ((forall r. Eff (Network : es) r -> Eff localEs r)
-> (forall r. Eff localEs r -> Eff (Network : es) r)
-> Eff (Network : es) a)
-> Eff (Network : es) a
forall a b. (a -> b) -> a -> b
$ \forall r. Eff (Network : es) r -> Eff localEs r
lift forall r. Eff localEs r -> Eff (Network : es) r
unlift ->
Request
-> Manager
-> (Response (BodyReader (Eff (Network : es)))
-> Eff (Network : es) a)
-> Eff (Network : es) a
forall a (es :: [(* -> *) -> * -> *]).
(HasCallStack, Network :> es) =>
Request
-> Manager
-> (Response (BodyReader (Eff es)) -> Eff es a)
-> Eff es a
Static.withResponse Request
r Manager
m (Eff localEs a -> Eff (Network : es) a
forall r. Eff localEs r -> Eff (Network : es) r
unlift (Eff localEs a -> Eff (Network : es) a)
-> (Response (BodyReader (Eff (Network : es))) -> Eff localEs a)
-> Response (BodyReader (Eff (Network : es)))
-> Eff (Network : es) a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Response (BodyReader (Eff localEs)) -> Eff localEs a
k (Response (BodyReader (Eff localEs)) -> Eff localEs a)
-> (Response (BodyReader (Eff (Network : es)))
-> Response (BodyReader (Eff localEs)))
-> Response (BodyReader (Eff (Network : es)))
-> Eff localEs a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (BodyReader (Eff (Network : es)) -> BodyReader (Eff localEs))
-> Response (BodyReader (Eff (Network : es)))
-> Response (BodyReader (Eff localEs))
forall a b. (a -> b) -> Response a -> Response b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap BodyReader (Eff (Network : es)) -> BodyReader (Eff localEs)
forall r. Eff (Network : es) r -> Eff localEs r
lift)
WithResponseHistory Request
r Manager
m HistoriedResponse (BodyReader (Eff localEs)) -> Eff localEs a
k -> LocalEnv localEs
-> UnliftStrategy
-> ((forall r. Eff (Network : es) r -> Eff localEs r)
-> (forall r. Eff localEs r -> Eff (Network : es) r)
-> Eff (Network : es) a)
-> Eff (Network : es) a
forall (localEs :: [(* -> *) -> * -> *])
(es :: [(* -> *) -> * -> *]) a.
HasCallStack =>
LocalEnv localEs
-> UnliftStrategy
-> ((forall r. Eff es r -> Eff localEs r)
-> (forall r. Eff localEs r -> Eff es r) -> Eff es a)
-> Eff es a
localLiftUnlift LocalEnv localEs
env UnliftStrategy
SeqUnlift (((forall r. Eff (Network : es) r -> Eff localEs r)
-> (forall r. Eff localEs r -> Eff (Network : es) r)
-> Eff (Network : es) a)
-> Eff (Network : es) a)
-> ((forall r. Eff (Network : es) r -> Eff localEs r)
-> (forall r. Eff localEs r -> Eff (Network : es) r)
-> Eff (Network : es) a)
-> Eff (Network : es) a
forall a b. (a -> b) -> a -> b
$ \forall r. Eff (Network : es) r -> Eff localEs r
lift forall r. Eff localEs r -> Eff (Network : es) r
unlift ->
Request
-> Manager
-> (HistoriedResponse (BodyReader (Eff (Network : es)))
-> Eff (Network : es) a)
-> Eff (Network : es) a
forall a (es :: [(* -> *) -> * -> *]).
(HasCallStack, Network :> es) =>
Request
-> Manager
-> (HistoriedResponse (BodyReader (Eff es)) -> Eff es a)
-> Eff es a
Static.withResponseHistory Request
r Manager
m (Eff localEs a -> Eff (Network : es) a
forall r. Eff localEs r -> Eff (Network : es) r
unlift (Eff localEs a -> Eff (Network : es) a)
-> (HistoriedResponse (BodyReader (Eff (Network : es)))
-> Eff localEs a)
-> HistoriedResponse (BodyReader (Eff (Network : es)))
-> Eff (Network : es) a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. HistoriedResponse (BodyReader (Eff localEs)) -> Eff localEs a
k (HistoriedResponse (BodyReader (Eff localEs)) -> Eff localEs a)
-> (HistoriedResponse (BodyReader (Eff (Network : es)))
-> HistoriedResponse (BodyReader (Eff localEs)))
-> HistoriedResponse (BodyReader (Eff (Network : es)))
-> Eff localEs a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (BodyReader (Eff (Network : es)) -> BodyReader (Eff localEs))
-> HistoriedResponse (BodyReader (Eff (Network : es)))
-> HistoriedResponse (BodyReader (Eff localEs))
forall a b. (a -> b) -> HistoriedResponse a -> HistoriedResponse b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap BodyReader (Eff (Network : es)) -> BodyReader (Eff localEs)
forall r. Eff (Network : es) r -> Eff localEs r
lift)
BrRead BodyReader (Eff localEs)
br -> LocalEnv localEs
-> ((forall r. Eff localEs r -> Eff (Network : es) r)
-> Eff (Network : es) a)
-> Eff (Network : es) a
forall (localEs :: [(* -> *) -> * -> *])
(es :: [(* -> *) -> * -> *]) a.
HasCallStack =>
LocalEnv localEs
-> ((forall r. Eff localEs r -> Eff es r) -> Eff es a) -> Eff es a
localSeqUnlift LocalEnv localEs
env (((forall r. Eff localEs r -> Eff (Network : es) r)
-> Eff (Network : es) a)
-> Eff (Network : es) a)
-> ((forall r. Eff localEs r -> Eff (Network : es) r)
-> Eff (Network : es) a)
-> Eff (Network : es) a
forall a b. (a -> b) -> a -> b
$ \forall r. Eff localEs r -> Eff (Network : es) r
unlift -> BodyReader (Eff (Network : es)) -> BodyReader (Eff (Network : es))
forall (es :: [(* -> *) -> * -> *]).
(HasCallStack, Network :> es) =>
BodyReader (Eff es) -> BodyReader (Eff es)
Static.brRead (BodyReader (Eff localEs) -> BodyReader (Eff (Network : es))
forall r. Eff localEs r -> Eff (Network : es) r
unlift BodyReader (Eff localEs)
br)
BrReadSome BodyReader (Eff localEs)
br Int
n -> LocalEnv localEs
-> ((forall r. Eff localEs r -> Eff (Network : es) r)
-> Eff (Network : es) a)
-> Eff (Network : es) a
forall (localEs :: [(* -> *) -> * -> *])
(es :: [(* -> *) -> * -> *]) a.
HasCallStack =>
LocalEnv localEs
-> ((forall r. Eff localEs r -> Eff es r) -> Eff es a) -> Eff es a
localSeqUnlift LocalEnv localEs
env (((forall r. Eff localEs r -> Eff (Network : es) r)
-> Eff (Network : es) a)
-> Eff (Network : es) a)
-> ((forall r. Eff localEs r -> Eff (Network : es) r)
-> Eff (Network : es) a)
-> Eff (Network : es) a
forall a b. (a -> b) -> a -> b
$ \forall r. Eff localEs r -> Eff (Network : es) r
unlift -> BodyReader (Eff (Network : es))
-> Int -> Eff (Network : es) ByteString
forall (es :: [(* -> *) -> * -> *]).
(HasCallStack, Network :> es) =>
BodyReader (Eff es) -> Int -> Eff es ByteString
Static.brReadSome (BodyReader (Eff localEs) -> BodyReader (Eff (Network : es))
forall r. Eff localEs r -> Eff (Network : es) r
unlift BodyReader (Eff localEs)
br) Int
n
BrConsume BodyReader (Eff localEs)
br -> LocalEnv localEs
-> ((forall r. Eff localEs r -> Eff (Network : es) r)
-> Eff (Network : es) a)
-> Eff (Network : es) a
forall (localEs :: [(* -> *) -> * -> *])
(es :: [(* -> *) -> * -> *]) a.
HasCallStack =>
LocalEnv localEs
-> ((forall r. Eff localEs r -> Eff es r) -> Eff es a) -> Eff es a
localSeqUnlift LocalEnv localEs
env (((forall r. Eff localEs r -> Eff (Network : es) r)
-> Eff (Network : es) a)
-> Eff (Network : es) a)
-> ((forall r. Eff localEs r -> Eff (Network : es) r)
-> Eff (Network : es) a)
-> Eff (Network : es) a
forall a b. (a -> b) -> a -> b
$ \forall r. Eff localEs r -> Eff (Network : es) r
unlift -> BodyReader (Eff (Network : es)) -> Eff (Network : es) [ByteString]
forall (es :: [(* -> *) -> * -> *]).
(HasCallStack, Network :> es) =>
BodyReader (Eff es) -> Eff es [ByteString]
Static.brConsume (BodyReader (Eff localEs) -> BodyReader (Eff (Network : es))
forall r. Eff localEs r -> Eff (Network : es) r
unlift BodyReader (Eff localEs)
br)
newManager ::
forall es.
( HasCallStack,
Network :> es
) =>
ManagerSettings ->
Eff es Manager
newManager :: forall (es :: [(* -> *) -> * -> *]).
(HasCallStack, Network :> es) =>
ManagerSettings -> Eff es Manager
newManager = Network (Eff es) Manager -> Eff es Manager
forall (e :: (* -> *) -> * -> *) (es :: [(* -> *) -> * -> *]) a.
(HasCallStack, DispatchOf e ~ 'Dynamic, e :> es) =>
e (Eff es) a -> Eff es a
send (Network (Eff es) Manager -> Eff es Manager)
-> (ManagerSettings -> Network (Eff es) Manager)
-> ManagerSettings
-> Eff es Manager
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ManagerSettings -> Network (Eff es) Manager
forall (m :: * -> *). ManagerSettings -> Network m Manager
NewManager
newTlsManager ::
forall es.
( HasCallStack,
Network :> es
) =>
Eff es Manager
newTlsManager :: forall (es :: [(* -> *) -> * -> *]).
(HasCallStack, Network :> es) =>
Eff es Manager
newTlsManager = Network (Eff es) Manager -> Eff es Manager
forall (e :: (* -> *) -> * -> *) (es :: [(* -> *) -> * -> *]) a.
(HasCallStack, DispatchOf e ~ 'Dynamic, e :> es) =>
e (Eff es) a -> Eff es a
send Network (Eff es) Manager
forall (m :: * -> *). Network m Manager
NewTlsManager
newTlsManagerWith ::
forall es.
( HasCallStack,
Network :> es
) =>
ManagerSettings ->
Eff es Manager
newTlsManagerWith :: forall (es :: [(* -> *) -> * -> *]).
(HasCallStack, Network :> es) =>
ManagerSettings -> Eff es Manager
newTlsManagerWith = Network (Eff es) Manager -> Eff es Manager
forall (e :: (* -> *) -> * -> *) (es :: [(* -> *) -> * -> *]) a.
(HasCallStack, DispatchOf e ~ 'Dynamic, e :> es) =>
e (Eff es) a -> Eff es a
send (Network (Eff es) Manager -> Eff es Manager)
-> (ManagerSettings -> Network (Eff es) Manager)
-> ManagerSettings
-> Eff es Manager
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ManagerSettings -> Network (Eff es) Manager
forall (m :: * -> *). ManagerSettings -> Network m Manager
NewTlsManagerWith
applyDigestAuth ::
forall n es.
( HasCallStack,
MonadThrow n,
Network :> es
) =>
ByteString ->
ByteString ->
Request ->
Manager ->
Eff es (n Request)
applyDigestAuth :: forall (n :: * -> *) (es :: [(* -> *) -> * -> *]).
(HasCallStack, MonadThrow n, Network :> es) =>
ByteString
-> ByteString -> Request -> Manager -> Eff es (n Request)
applyDigestAuth ByteString
b1 ByteString
b2 Request
r = Network (Eff es) (n Request) -> Eff es (n Request)
forall (e :: (* -> *) -> * -> *) (es :: [(* -> *) -> * -> *]) a.
(HasCallStack, DispatchOf e ~ 'Dynamic, e :> es) =>
e (Eff es) a -> Eff es a
send (Network (Eff es) (n Request) -> Eff es (n Request))
-> (Manager -> Network (Eff es) (n Request))
-> Manager
-> Eff es (n Request)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString
-> ByteString -> Request -> Manager -> Network (Eff es) (n Request)
forall (m :: * -> *) (n :: * -> *).
MonadThrow n =>
ByteString
-> ByteString -> Request -> Manager -> Network m (n Request)
ApplyDigestAuth ByteString
b1 ByteString
b2 Request
r
withResponse ::
forall a es.
( HasCallStack,
Network :> es
) =>
Request ->
Manager ->
(Response (BodyReader (Eff es)) -> Eff es a) ->
Eff es a
withResponse :: forall a (es :: [(* -> *) -> * -> *]).
(HasCallStack, Network :> es) =>
Request
-> Manager
-> (Response (BodyReader (Eff es)) -> Eff es a)
-> Eff es a
withResponse Request
r Manager
m = Network (Eff es) a -> Eff es a
forall (e :: (* -> *) -> * -> *) (es :: [(* -> *) -> * -> *]) a.
(HasCallStack, DispatchOf e ~ 'Dynamic, e :> es) =>
e (Eff es) a -> Eff es a
send (Network (Eff es) a -> Eff es a)
-> ((Response (BodyReader (Eff es)) -> Eff es a)
-> Network (Eff es) a)
-> (Response (BodyReader (Eff es)) -> Eff es a)
-> Eff es a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Request
-> Manager
-> (Response (BodyReader (Eff es)) -> Eff es a)
-> Network (Eff es) a
forall (m :: * -> *) a.
Request
-> Manager -> (Response (BodyReader m) -> m a) -> Network m a
WithResponse Request
r Manager
m
withResponseHistory ::
forall a es.
( HasCallStack,
Network :> es
) =>
Request ->
Manager ->
(HistoriedResponse (BodyReader (Eff es)) -> Eff es a) ->
Eff es a
withResponseHistory :: forall a (es :: [(* -> *) -> * -> *]).
(HasCallStack, Network :> es) =>
Request
-> Manager
-> (HistoriedResponse (BodyReader (Eff es)) -> Eff es a)
-> Eff es a
withResponseHistory Request
r Manager
m = Network (Eff es) a -> Eff es a
forall (e :: (* -> *) -> * -> *) (es :: [(* -> *) -> * -> *]) a.
(HasCallStack, DispatchOf e ~ 'Dynamic, e :> es) =>
e (Eff es) a -> Eff es a
send (Network (Eff es) a -> Eff es a)
-> ((HistoriedResponse (BodyReader (Eff es)) -> Eff es a)
-> Network (Eff es) a)
-> (HistoriedResponse (BodyReader (Eff es)) -> Eff es a)
-> Eff es a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Request
-> Manager
-> (HistoriedResponse (BodyReader (Eff es)) -> Eff es a)
-> Network (Eff es) a
forall (m :: * -> *) a.
Request
-> Manager
-> (HistoriedResponse (BodyReader m) -> m a)
-> Network m a
WithResponseHistory Request
r Manager
m
brRead ::
forall es.
( HasCallStack,
Network :> es
) =>
BodyReader (Eff es) ->
Eff es ByteString
brRead :: forall (es :: [(* -> *) -> * -> *]).
(HasCallStack, Network :> es) =>
BodyReader (Eff es) -> BodyReader (Eff es)
brRead = Network (Eff es) ByteString -> Eff es ByteString
forall (e :: (* -> *) -> * -> *) (es :: [(* -> *) -> * -> *]) a.
(HasCallStack, DispatchOf e ~ 'Dynamic, e :> es) =>
e (Eff es) a -> Eff es a
send (Network (Eff es) ByteString -> Eff es ByteString)
-> (Eff es ByteString -> Network (Eff es) ByteString)
-> Eff es ByteString
-> Eff es ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Eff es ByteString -> Network (Eff es) ByteString
forall (m :: * -> *). BodyReader m -> Network m ByteString
BrRead
brReadSome ::
forall es.
( HasCallStack,
Network :> es
) =>
BodyReader (Eff es) ->
Int ->
Eff es LazyByteString
brReadSome :: forall (es :: [(* -> *) -> * -> *]).
(HasCallStack, Network :> es) =>
BodyReader (Eff es) -> Int -> Eff es ByteString
brReadSome BodyReader (Eff es)
br = Network (Eff es) ByteString -> Eff es ByteString
forall (e :: (* -> *) -> * -> *) (es :: [(* -> *) -> * -> *]) a.
(HasCallStack, DispatchOf e ~ 'Dynamic, e :> es) =>
e (Eff es) a -> Eff es a
send (Network (Eff es) ByteString -> Eff es ByteString)
-> (Int -> Network (Eff es) ByteString) -> Int -> Eff es ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. BodyReader (Eff es) -> Int -> Network (Eff es) ByteString
forall (m :: * -> *). BodyReader m -> Int -> Network m ByteString
BrReadSome BodyReader (Eff es)
br
brConsume ::
forall es.
( HasCallStack,
Network :> es
) =>
BodyReader (Eff es) ->
Eff es [ByteString]
brConsume :: forall (es :: [(* -> *) -> * -> *]).
(HasCallStack, Network :> es) =>
BodyReader (Eff es) -> Eff es [ByteString]
brConsume = Network (Eff es) [ByteString] -> Eff es [ByteString]
forall (e :: (* -> *) -> * -> *) (es :: [(* -> *) -> * -> *]) a.
(HasCallStack, DispatchOf e ~ 'Dynamic, e :> es) =>
e (Eff es) a -> Eff es a
send (Network (Eff es) [ByteString] -> Eff es [ByteString])
-> (BodyReader (Eff es) -> Network (Eff es) [ByteString])
-> BodyReader (Eff es)
-> Eff es [ByteString]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. BodyReader (Eff es) -> Network (Eff es) [ByteString]
forall (m :: * -> *). BodyReader m -> Network m [ByteString]
BrConsume
readResponse ::
forall a es.
( HasCallStack,
Network :> es
) =>
String ->
Response (BodyReader (Eff es)) ->
(BodyReader (Eff es) -> Eff es a) ->
Eff es a
readResponse :: forall a (es :: [(* -> *) -> * -> *]).
(HasCallStack, Network :> es) =>
String
-> Response (BodyReader (Eff es))
-> (BodyReader (Eff es) -> Eff es a)
-> Eff es a
readResponse = String
-> Response (BodyReader (Eff es))
-> (BodyReader (Eff es) -> Eff es a)
-> Eff es a
forall br (es :: [(* -> *) -> * -> *]) a.
HasCallStack =>
String -> Response br -> (br -> Eff es a) -> Eff es a
Internal.readResponse
readResponseUtf8 ::
forall es.
( HasCallStack,
Network :> es
) =>
String ->
Response (BodyReader (Eff es)) ->
Eff es Text
readResponseUtf8 :: forall (es :: [(* -> *) -> * -> *]).
(HasCallStack, Network :> es) =>
String -> Response (BodyReader (Eff es)) -> Eff es Text
readResponseUtf8 String
url Response (BodyReader (Eff es))
res =
String
-> Response (BodyReader (Eff es))
-> (BodyReader (Eff es) -> Eff es [ByteString])
-> Eff es [ByteString]
forall a (es :: [(* -> *) -> * -> *]).
(HasCallStack, Network :> es) =>
String
-> Response (BodyReader (Eff es))
-> (BodyReader (Eff es) -> Eff es a)
-> Eff es a
readResponse String
url Response (BodyReader (Eff es))
res BodyReader (Eff es) -> Eff es [ByteString]
forall (es :: [(* -> *) -> * -> *]).
(HasCallStack, Network :> es) =>
BodyReader (Eff es) -> Eff es [ByteString]
brConsume Eff es [ByteString] -> ([ByteString] -> Eff es Text) -> Eff es Text
forall a b. Eff es a -> (a -> Eff es b) -> Eff es b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= [ByteString] -> Eff es Text
forall (es :: [(* -> *) -> * -> *]).
HasCallStack =>
[ByteString] -> Eff es Text
Internal.decodeUtf8
readResponseJson ::
forall a es.
( FromJSON a,
HasCallStack,
Network :> es
) =>
String ->
Response (BodyReader (Eff es)) ->
Eff es a
readResponseJson :: forall a (es :: [(* -> *) -> * -> *]).
(FromJSON a, HasCallStack, Network :> es) =>
String -> Response (BodyReader (Eff es)) -> Eff es a
readResponseJson String
url Response (BodyReader (Eff es))
res =
String
-> Response (BodyReader (Eff es))
-> (BodyReader (Eff es) -> Eff es [ByteString])
-> Eff es [ByteString]
forall a (es :: [(* -> *) -> * -> *]).
(HasCallStack, Network :> es) =>
String
-> Response (BodyReader (Eff es))
-> (BodyReader (Eff es) -> Eff es a)
-> Eff es a
readResponse String
url Response (BodyReader (Eff es))
res BodyReader (Eff es) -> Eff es [ByteString]
forall (es :: [(* -> *) -> * -> *]).
(HasCallStack, Network :> es) =>
BodyReader (Eff es) -> Eff es [ByteString]
brConsume Eff es [ByteString] -> ([ByteString] -> Eff es a) -> Eff es a
forall a b. Eff es a -> (a -> Eff es b) -> Eff es b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= [ByteString] -> Eff es a
forall a (es :: [(* -> *) -> * -> *]).
(FromJSON a, HasCallStack) =>
[ByteString] -> Eff es a
Internal.decodeJson