module Belka.Potoki.Transform
where
import Belka.Prelude
import Potoki.Transform
import qualified Network.HTTP.Client as A
import qualified Network.HTTP.Client.TLS as A
import qualified Belka.Request as B
import qualified Belka.ParseHead as C
import qualified Belka.ParseBody as D
import qualified Belka.TransportError as G
import qualified Belka.IO as H
import qualified Belka.Interact as I
request :: C.ParseHead (D.ParseBody response) -> Transform B.Request (Either Text (Either G.TransportError response))
request parse =
arr (\ request -> A.newTlsManager >>= \ manager -> H.interact manager (I.request request parse) <* A.closeManager manager) >>>
executeIO
requestUsingManager :: A.Manager -> C.ParseHead (D.ParseBody response) -> Transform B.Request (Either Text (Either G.TransportError response))
requestUsingManager manager parse =
arr (\ request -> H.interact manager (I.request request parse)) >>>
executeIO
requestUsingNewManager :: C.ParseHead (D.ParseBody response) -> Transform B.Request (Either Text (Either G.TransportError response))
requestUsingNewManager parse =
ioTransform $ do
manager <- A.newTlsManagerWith settings
return (requestUsingManager manager parse)
where
settings =
A.tlsManagerSettings
requestUsingGlobalManager :: C.ParseHead (D.ParseBody response) -> Transform B.Request (Either Text (Either G.TransportError response))
requestUsingGlobalManager parse =
ioTransform $ do
manager <- A.getGlobalManager
return (requestUsingManager manager parse)