@@ -1,19 +1,9 @@
1−{-# LANGUAGE BangPatterns #-}
2{-# LANGUAGE DataKinds #-}
1{-# LANGUAGE DataKinds #-}
3−{-# LANGUAGE DeriveDataTypeable #-}
4−{-# LANGUAGE DeriveGeneric #-}
5−{-# LANGUAGE DeriveLift #-}
6−{-# LANGUAGE FlexibleInstances #-}
7−{-# LANGUAGE GeneralizedNewtypeDeriving #-}
8{-# LANGUAGE LambdaCase #-}
2{-# LANGUAGE LambdaCase #-}
9−{-# LANGUAGE MultiParamTypeClasses #-}
10{-# LANGUAGE OverloadedStrings #-}
3{-# LANGUAGE OverloadedStrings #-}
11{-# LANGUAGE QuasiQuotes #-}
4{-# LANGUAGE QuasiQuotes #-}
12−{-# LANGUAGE RankNTypes #-}
13{-# LANGUAGE RecordWildCards #-}
5{-# LANGUAGE RecordWildCards #-}
14{-# LANGUAGE RoleAnnotations #-}
6{-# LANGUAGE RoleAnnotations #-}
15−{-# LANGUAGE ScopedTypeVariables #-}
16−{-# LANGUAGE StandaloneDeriving #-}
17{-# LANGUAGE TemplateHaskellQuotes #-}
7{-# LANGUAGE TemplateHaskellQuotes #-}
18{-# LANGUAGE TypeFamilies #-}
8{-# LANGUAGE TypeFamilies #-}
19{-# LANGUAGE UndecidableInstances #-}
9{-# LANGUAGE UndecidableInstances #-}
@@ -213,7 +203,7 @@ module Network.HTTP.Req
216−import qualified Blaze.ByteString.Builder as BB
206+import Blaze.ByteString.Builder qualified as BB
217import Control.Applicative
207import Control.Applicative
218import Control.Arrow (first, second)
208import Control.Arrow (first, second)
219import Control.Exception hiding (Handler (..), TypeError)
209import Control.Exception hiding (Handler (..), TypeError)
@@ -229,55 +219,56 @@ import Control.Monad.Trans.Control
229import Control.Monad.Trans.Except (ExceptT)
219import Control.Monad.Trans.Except (ExceptT)
230import Control.Monad.Trans.Identity (IdentityT)
220import Control.Monad.Trans.Identity (IdentityT)
231import Control.Monad.Trans.Maybe (MaybeT)
221import Control.Monad.Trans.Maybe (MaybeT)
232−import qualified Control.Monad.Trans.RWS.CPS as RWS.CPS
222+import Control.Monad.Trans.RWS.CPS qualified as RWS.CPS
233−import qualified Control.Monad.Trans.RWS.Lazy as RWS.Lazy
223+import Control.Monad.Trans.RWS.Lazy qualified as RWS.Lazy
234−import qualified Control.Monad.Trans.RWS.Strict as RWS.Strict
224+import Control.Monad.Trans.RWS.Strict qualified as RWS.Strict
235import Control.Monad.Trans.Select (SelectT)
225import Control.Monad.Trans.Select (SelectT)
236−import qualified Control.Monad.Trans.State.Lazy as State.Lazy
226+import Control.Monad.Trans.State.Lazy qualified as State.Lazy
237−import qualified Control.Monad.Trans.State.Strict as State.Strict
227+import Control.Monad.Trans.State.Strict qualified as State.Strict
238−import qualified Control.Monad.Trans.Writer.CPS as Writer.CPS
228+import Control.Monad.Trans.Writer.CPS qualified as Writer.CPS
239−import qualified Control.Monad.Trans.Writer.Lazy as Writer.Lazy
229+import Control.Monad.Trans.Writer.Lazy qualified as Writer.Lazy
240−import qualified Control.Monad.Trans.Writer.Strict as Writer.Strict
230+import Control.Monad.Trans.Writer.Strict qualified as Writer.Strict
241import Control.Retry
231import Control.Retry
242import Data.Aeson (FromJSON (..), ToJSON (..))
232import Data.Aeson (FromJSON (..), ToJSON (..))
243−import qualified Data.Aeson as A
233+import Data.Aeson qualified as A
244import Data.ByteString (ByteString)
234import Data.ByteString (ByteString)
245−import qualified Data.ByteString as B
235+import Data.ByteString qualified as B
246−import qualified Data.ByteString.Lazy as BL
236+import Data.ByteString.Lazy qualified as BL
247−import qualified Data.CaseInsensitive as CI
237+import Data.CaseInsensitive qualified as CI
248import Data.Data (Data)
238import Data.Data (Data)
239+import Data.Default.Class (def)
249import Data.Function (on)
240import Data.Function (on)
250import Data.IORef
241import Data.IORef
251import Data.Kind (Constraint, Type)
242import Data.Kind (Constraint, Type)
252import Data.List (foldl', nubBy)
243import Data.List (foldl', nubBy)
253import Data.List.NonEmpty (NonEmpty (..))
244import Data.List.NonEmpty (NonEmpty (..))
254−import qualified Data.List.NonEmpty as NE
245+import Data.List.NonEmpty qualified as NE
255import Data.Maybe (fromMaybe)
246import Data.Maybe (fromMaybe)
256import Data.Proxy
247import Data.Proxy
257import Data.Semigroup (Endo (..))
248import Data.Semigroup (Endo (..))
258−import qualified Data.Set as S
249+import Data.Set qualified as S
259import Data.Text (Text)
250import Data.Text (Text)
260−import qualified Data.Text as T
251+import Data.Text qualified as T
261−import qualified Data.Text.Encoding as T
252+import Data.Text.Encoding qualified as T
262import Data.Typeable (Typeable, cast)
253import Data.Typeable (Typeable, cast)
263import GHC.Generics
254import GHC.Generics
264import GHC.TypeLits
255import GHC.TypeLits
265−import qualified Language.Haskell.TH as TH
256+import Language.Haskell.TH qualified as TH
266−import qualified Language.Haskell.TH.Quote as TH
257+import Language.Haskell.TH.Quote qualified as TH
267−import qualified Language.Haskell.TH.Syntax as TH
258+import Language.Haskell.TH.Syntax qualified as TH
268−import qualified Network.Connection as NC
259+import Network.Connection qualified as NC
269−import qualified Network.HTTP.Client as L
260+import Network.HTTP.Client qualified as L
270−import qualified Network.HTTP.Client.Internal as LI
261+import Network.HTTP.Client.Internal qualified as LI
271−import qualified Network.HTTP.Client.MultipartFormData as LM
262+import Network.HTTP.Client.MultipartFormData qualified as LM
272−import qualified Network.HTTP.Client.TLS as L
263+import Network.HTTP.Client.TLS qualified as L
273−import qualified Network.HTTP.Types as Y
264+import Network.HTTP.Types qualified as Y
274import System.IO.Unsafe (unsafePerformIO)
265import System.IO.Unsafe (unsafePerformIO)
275import Text.URI (URI)
266import Text.URI (URI)
276−import qualified Text.URI as URI
267+import Text.URI qualified as URI
277−import qualified Text.URI.QQ as QQ
268+import Text.URI.QQ qualified as QQ
278−import qualified Web.Authenticate.OAuth as OAuth
269+import Web.Authenticate.OAuth qualified as OAuth
279import Web.FormUrlEncoded (FromForm (..), ToForm (..))
270import Web.FormUrlEncoded (FromForm (..), ToForm (..))
280−import qualified Web.FormUrlEncoded as Form
271+import Web.FormUrlEncoded qualified as Form
281import Web.HttpApiData (ToHttpApiData (..))
272import Web.HttpApiData (ToHttpApiData (..))
283----------------------------------------------------------------------------
274----------------------------------------------------------------------------
@@ -594,10 +585,10 @@ req' method url body options m = do
594 withReqManager (m request)
585 withReqManager (m request)
596-- | Perform an action using the global implicit 'L.Manager' that the rest
587-- | Perform an action using the global implicit 'L.Manager' that the rest
597−-- of the library uses. This allows to reuse connections that the
588+-- of the library uses. This allows us to reuse connections that the
598-- 'L.Manager' controls.
589-- 'L.Manager' controls.
599withReqManager :: (MonadIO m) => (L.Manager -> m a) -> m a
590withReqManager :: (MonadIO m) => (L.Manager -> m a) -> m a
600−withReqManager m = liftIO (readIORef globalManager) >>= m
591+withReqManager m = m globalManager
602-- | The global 'L.Manager' that 'req' uses. Here we just go with the
593-- | The global 'L.Manager' that 'req' uses. Here we just go with the
603-- default settings, so users don't need to deal with this manager stuff at
594-- default settings, so users don't need to deal with this manager stuff at
@@ -610,16 +601,16 @@ withReqManager m = liftIO (readIORef globalManager) >>= m
610-- manager. From that moment on the 'IORef' will be just reused—exactly the
601-- manager. From that moment on the 'IORef' will be just reused—exactly the
611-- behavior we want here in order to maximize connection sharing. GHC could
602-- behavior we want here in order to maximize connection sharing. GHC could
612-- spoil the plan by inlining the definition, hence the @NOINLINE@ pragma.
603-- spoil the plan by inlining the definition, hence the @NOINLINE@ pragma.
613−globalManager :: IORef L.Manager
604+globalManager :: L.Manager
614globalManager = unsafePerformIO $ do
605globalManager = unsafePerformIO $ do
615 context <- NC.initConnectionContext
606 context <- NC.initConnectionContext
616 let settings =
607 let settings =
617 L.mkManagerSettingsContext
608 L.mkManagerSettingsContext
618 (Just context)
609 (Just context)
619− (NC.TLSSettingsSimple False False False)
610+ def
621 manager <- L.newManager settings
612 manager <- L.newManager settings
622− newIORef manager
613+ return manager
623{-# NOINLINE globalManager #-}
614{-# NOINLINE globalManager #-}
625----------------------------------------------------------------------------
616----------------------------------------------------------------------------
@@ -725,7 +716,6 @@ data HttpConfig = HttpConfig
725 -- @since 3.6.0
716 -- @since 3.6.0
726 httpConfigBodyPreviewLength :: forall a. (Num a) => a
717 httpConfigBodyPreviewLength :: forall a. (Num a) => a
730-- | The default value of 'HttpConfig'.
720-- | The default value of 'HttpConfig'.
@@ -1034,7 +1024,7 @@ instance (HttpMethod method) => RequestComponent (Tagged "method" method) where
1034-- > -- https://%D1%8E%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4.%D1%80%D1%84
1024-- > -- https://%D1%8E%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4.%D1%80%D1%84
1035data Url (scheme :: Scheme) = Url Scheme (NonEmpty Text)
1025data Url (scheme :: Scheme) = Url Scheme (NonEmpty Text)
1036 -- NOTE The second value is the path segments in reversed order.
1026 -- NOTE The second value is the path segments in reversed order.
1037− deriving (Eq, Ord, Show, Data, Typeable, Generic)
1027+ deriving (Eq, Ord, Show, Data, Generic)
1039type role Url nominal
1029type role Url nominal
@@ -2021,7 +2011,7 @@ data HttpException
2021 | -- | A wrapper with Aeson-produced 'String' describing why decoding
2011 | -- | A wrapper with Aeson-produced 'String' describing why decoding
2022 -- failed
2012 -- failed
2023 JsonHttpException String
2013 JsonHttpException String
2024− deriving (Show, Typeable, Generic)
2014+ deriving (Show, Generic)
2026instance Exception HttpException
2016instance Exception HttpException
@@ -2058,4 +2048,4 @@ data Scheme
2059 | -- | HTTPS
2049 | -- | HTTPS
2061− deriving (Eq, Ord, Show, Data, Typeable, Generic, TH.Lift)
2051+ deriving (Eq, Ord, Show, Data, Generic, TH.Lift)