Adds */* as a valid media type that will return json [fix #274]
This commit is contained in:
@@ -292,19 +292,21 @@ jsonMT = "application/json"
|
||||
csvMT :: BS.ByteString
|
||||
csvMT = "text/csv"
|
||||
|
||||
allMT :: BS.ByteString
|
||||
allMT = "*/*"
|
||||
|
||||
jsonH :: Header
|
||||
jsonH = (hContentType, jsonMT)
|
||||
|
||||
contentTypeForAccept :: Maybe BS.ByteString -> Maybe BS.ByteString
|
||||
contentTypeForAccept accept
|
||||
| isNothing accept || hasJson = Just jsonMT
|
||||
| hasCsv = Just csvMT
|
||||
| isNothing accept || has allMT || has jsonMT = Just jsonMT
|
||||
| has csvMT = Just csvMT
|
||||
| otherwise = Nothing
|
||||
where
|
||||
Just acceptH = accept
|
||||
findInAccept = flip find $ parseHttpAccept acceptH
|
||||
hasJson = isJust $ findInAccept $ BS.isPrefixOf jsonMT
|
||||
hasCsv = isJust $ findInAccept $ BS.isPrefixOf csvMT
|
||||
has = isJust . findInAccept . BS.isPrefixOf
|
||||
|
||||
bodyForAccept :: BS.ByteString -> QualifiedIdentifier -> StatementT
|
||||
bodyForAccept contentType table
|
||||
|
||||
@@ -184,6 +184,11 @@ spec =
|
||||
(acceptHdrs "text/unknowntype") ""
|
||||
`shouldRespondWith` 415
|
||||
|
||||
it "should respond correctly to */* in accept header" $
|
||||
request methodGet "/simple_pk"
|
||||
(acceptHdrs "*/*") ""
|
||||
`shouldRespondWith` 200
|
||||
|
||||
it "should respond correctly to multiple types in accept header" $
|
||||
request methodGet "/simple_pk"
|
||||
(acceptHdrs "text/unknowntype, text/csv") ""
|
||||
|
||||
Reference in New Issue
Block a user