@@ -13,6 +13,7 @@ import Prelude.Compat
1313import Control.Exception
1414import Control.Monad
1515import Control.Monad.Catch (MonadThrow, MonadCatch)
16+import Data.Foldable (toList)
1617
1718#if MIN_VERSION_mtl(2,2,0)
1819import Control.Monad.Except (MonadError(..))
@@ -25,7 +26,7 @@ import Control.Monad.Trans.Except
2526import GHC.Generics
2627import Control.Monad.IO.Class ()
2728import Control.Monad.Reader
28−import Data.ByteString.Lazy hiding (pack, filter, map, null, elem)
29+import Data.ByteString.Lazy hiding (pack, filter, map, null, elem, any)
2930import Data.String
3031import Data.String.Conversions
3132import Data.Proxy
@@ -215,10 +216,10 @@ performRequest reqMethod req = do
215216performRequestCT :: MimeUnrender ct result => Proxy ct -> Method -> Req
216217 -> ClientM ([HTTP.Header], result)
217218performRequestCT ct reqMethod req = do
218− let acceptCT = contentType ct
219+ let acceptCTS = contentTypes ct
219220 (_status, respBody, respCT, hdrs, _response) <-
220− performRequest reqMethod (req { reqAccept = [acceptCT] })
221− unless (matches respCT (acceptCT)) $ throwError $ UnsupportedContentType respCT respBody
221+ performRequest reqMethod (req { reqAccept = toList acceptCTS })
222+ unless (any (matches respCT) acceptCTS) $ throwError $ UnsupportedContentType respCT respBody
222223 case mimeUnrender ct respBody of
223224 Left err -> throwError $ DecodeFailure err respCT respBody
224225 Right val -> return (hdrs, val)