@@ -28,6 +28,7 @@ import Data.ByteString.Builder (toLazyByteString)
2828import qualified Data.ByteString.Lazy as BSL
2929import Data.Foldable (toList)
3030import Data.Functor.Alt (Alt (..))
31+import Data.Maybe (maybeToList)
3132import Data.Monoid ((<>))
3233import Data.Proxy (Proxy (..))
3334import Data.Sequence (fromList)
@@ -133,16 +134,26 @@ requestToClientRequest burl r = Client.defaultRequest
133134 <> toLazyByteString (requestPath r)
134135 , Client.queryString = renderQuery True . toList $ requestQueryString r
135136 , Client.requestHeaders =
136− let orig = toList $ requestHeaders r
137− in maybe orig (: orig) contentTypeHdr
137+ maybeToList acceptHdr ++ maybeToList contentTypeHdr ++ headers
138138 , Client.requestBody = body
139139 , Client.secure = isSecure
140140 }
141141 where
142+ -- Content-Type and Accept are specified by requestBody and requestAccept
143+ headers = filter (\(h, _) -> h /= "Accept" && h /= "Content-Type") $
144+ toList $requestHeaders r
145+
146+ acceptHdr
147+ | null hs = Nothing
148+ | otherwise = Just ("Accept", renderHeader hs)
149+ where
150+ hs = toList $ requestAccept r
151+
142152 (body, contentTypeHdr) = case requestBody r of
143153 Nothing -> (Client.RequestBodyLBS "", Nothing)
144154 Just (RequestBodyLBS body', typ)
145155 -> (Client.RequestBodyLBS body', Just (hContentType, renderHeader typ))
156+
146157 isSecure = case baseUrlScheme burl of
147158 Http -> False
148159 Https -> True