@@ -10,10 +10,11 @@ import Control.Monad.Except (MonadError, ExceptT, runExceptT, throwError)
10import Control.Monad.IO.Class
10import Control.Monad.IO.Class
11import Control.Monad.Reader
11import Control.Monad.Reader
12import Data.Aeson
12import Data.Aeson
13+import Data.ByteString (ByteString)
13import Data.Text (Text)
14import Data.Text (Text)
14import Data.Text qualified as Text
15import Data.Text qualified as Text
15import Data.UUID (UUID)
16import Data.UUID (UUID)
16−import Network.HTTP.Client hiding (responseHeaders)
17+import Network.HTTP.Client as Client
17import Network.HTTP.Req
18import Network.HTTP.Req
18import Network.HTTP.Types
19import Network.HTTP.Types
@@ -45,8 +46,14 @@ instance MonadHttp ConnexpayM where
45 , Just f <- guessFailure (statusCode $ responseStatus resp) err.message = throwError (PaymentFailure f)
46 , Just f <- guessFailure (statusCode $ responseStatus resp) err.message = throwError (PaymentFailure f)
46 handleHttpException (VanillaHttpException (HttpExceptionRequest _ c)) = throwError (ConnectionError $ HttpFailure c)
47 handleHttpException (VanillaHttpException (HttpExceptionRequest _ c)) = throwError (ConnectionError $ HttpFailure c)
48− getHttpConfig = do mgr <- asks (.manager)
50+ do mgr <- asks (.manager)
51+ log_ <- asks (.logAction)
49− pure (defaultHttpConfig { httpConfigAltManager = Just mgr })
54+ { httpConfigAltManager = Just mgr
55+ , httpConfigLogResponse = logResponse log_ }
52runConnexpay :: Connexpay -> ConnexpayM a -> IO (Either ConnexpayError a)
59runConnexpay :: Connexpay -> ConnexpayM a -> IO (Either ConnexpayError a)
@@ -62,11 +69,10 @@ bearerToken :: ConnexpayM (Maybe BearerToken)
62bearerToken = do v <- asks (.bearerToken)
69bearerToken = do v <- asks (.bearerToken)
63 liftIO (readMVar v)
70 liftIO (readMVar v)
65−logResponse :: HttpResponse r => r -> ConnexpayM ()
72+logResponse :: (Text -> IO ()) -> Request -> Response a -> ByteString -> IO ()
66−logResponse r =
73+logResponse log_ _req resp body = log_ msg
67− do log_ <- asks (.logAction)
69 where msg = Text.unlines [ "Connexpay response:"
74 where msg = Text.unlines [ "Connexpay response:"
70− , "HTTP code: " <> tshow (responseCode r)
75+ , "HTTP code: " <> tshow (statusCode (responseStatus resp))
71− , "Headers: " <> tshow (responseHeaders r)
76+ , "Headers: " <> tshow (Client.responseHeaders resp)
77+ , "Body: " <> tshow body