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 :: BS.ByteString
|
||||||
csvMT = "text/csv"
|
csvMT = "text/csv"
|
||||||
|
|
||||||
|
allMT :: BS.ByteString
|
||||||
|
allMT = "*/*"
|
||||||
|
|
||||||
jsonH :: Header
|
jsonH :: Header
|
||||||
jsonH = (hContentType, jsonMT)
|
jsonH = (hContentType, jsonMT)
|
||||||
|
|
||||||
contentTypeForAccept :: Maybe BS.ByteString -> Maybe BS.ByteString
|
contentTypeForAccept :: Maybe BS.ByteString -> Maybe BS.ByteString
|
||||||
contentTypeForAccept accept
|
contentTypeForAccept accept
|
||||||
| isNothing accept || hasJson = Just jsonMT
|
| isNothing accept || has allMT || has jsonMT = Just jsonMT
|
||||||
| hasCsv = Just csvMT
|
| has csvMT = Just csvMT
|
||||||
| otherwise = Nothing
|
| otherwise = Nothing
|
||||||
where
|
where
|
||||||
Just acceptH = accept
|
Just acceptH = accept
|
||||||
findInAccept = flip find $ parseHttpAccept acceptH
|
findInAccept = flip find $ parseHttpAccept acceptH
|
||||||
hasJson = isJust $ findInAccept $ BS.isPrefixOf jsonMT
|
has = isJust . findInAccept . BS.isPrefixOf
|
||||||
hasCsv = isJust $ findInAccept $ BS.isPrefixOf csvMT
|
|
||||||
|
|
||||||
bodyForAccept :: BS.ByteString -> QualifiedIdentifier -> StatementT
|
bodyForAccept :: BS.ByteString -> QualifiedIdentifier -> StatementT
|
||||||
bodyForAccept contentType table
|
bodyForAccept contentType table
|
||||||
|
|||||||
@@ -184,6 +184,11 @@ spec =
|
|||||||
(acceptHdrs "text/unknowntype") ""
|
(acceptHdrs "text/unknowntype") ""
|
||||||
`shouldRespondWith` 415
|
`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" $
|
it "should respond correctly to multiple types in accept header" $
|
||||||
request methodGet "/simple_pk"
|
request methodGet "/simple_pk"
|
||||||
(acceptHdrs "text/unknowntype, text/csv") ""
|
(acceptHdrs "text/unknowntype, text/csv") ""
|
||||||
|
|||||||
Reference in New Issue
Block a user