@@ -67,7 +67,7 @@ import Control.Monad.Catch (MonadCatch (..), MonadThrow)
6767import Control.Monad.Trans.Class (lift )
6868import Control.Monad.Trans.Except (ExceptT (.. ), runExceptT )
6969import Data.Aeson (eitherDecode )
70- import Data.List (find )
70+ import Data.List (find , intercalate )
7171import Data.String (fromString )
7272import Data.Tagged (Tagged (.. ))
7373import Data.Version (showVersion )
@@ -79,7 +79,9 @@ import Network.HTTP.Client
7979import Network.HTTP.Link.Parser (parseLinkHeaderBS )
8080import Network.HTTP.Link.Types (Link (.. ), LinkParam (.. ), href , linkParams )
8181import Network.HTTP.Types (Method , RequestHeaders , Status (.. ))
82- import Network.URI (URI , parseURIReference , relativeTo )
82+ import Network.URI
83+ (URI , escapeURIString , isUnescapedInURIComponent , parseURIReference ,
84+ relativeTo )
8385
8486import qualified Data.ByteString as BS
8587import qualified Data.ByteString.Lazy as LBS
@@ -413,7 +415,8 @@ makeHttpRequest auth r = case r of
413415 parseUrl' = HTTP. parseUrlThrow . T. unpack
414416
415417 url :: Paths -> Text
416- url paths = maybe " https://api.github.com" id (endpoint =<< auth) <> " /" <> T. intercalate " /" paths
418+ url paths = maybe " https://api.github.com" id (endpoint =<< auth) <> " /" <> T. pack (intercalate " /" paths') where
419+ paths' = map (escapeURIString isUnescapedInURIComponent . T. unpack) paths
417420
418421 setReqHeaders :: HTTP. Request -> HTTP. Request
419422 setReqHeaders req = req { requestHeaders = reqHeaders <> requestHeaders req }
0 commit comments