Use Content-Type text/csv for CSV responses

This commit is contained in:
Joe Nelson
2015-08-15 11:57:57 -07:00
parent 9d5011e864
commit adac39bd7c
2 changed files with 10 additions and 3 deletions
+5 -2
View File
@@ -85,7 +85,7 @@ app conf reqBody req =
. parseSimpleQuery
$ rawQueryString req
return $ responseLBS status
[jsonH, contentRange,
[if accept == Just "text/csv" then csvH else jsonH, contentRange,
("Content-Location",
"/" <> cs table <>
if Prelude.null canonical then "" else "?" <> cs canonical
@@ -248,7 +248,7 @@ rangeStatus from to total
| otherwise = status200
bodyForAccept :: Maybe BS.ByteString -> QualifiedTable -> StatementT
bodyForAccept accept table =
bodyForAccept accept table =
case accept of
Just "text/csv" -> asCsvWithCount table
_ -> asJsonWithCount -- defaults to JSON
@@ -276,6 +276,9 @@ requestedSchema v1schema hdrs =
jsonH :: Header
jsonH = (hContentType, "application/json")
csvH :: Header
csvH = (hContentType, "text/csv")
handleJsonObj :: BL.ByteString -> (Object -> H.Tx P.Postgres s Response)
-> H.Tx P.Postgres s Response
handleJsonObj reqBody handler = do
+5 -1
View File
@@ -126,7 +126,11 @@ spec =
it "should respond with CSV to 'text/csv' request" $
request methodGet "/simple_pk"
(acceptHdrs "text/csv") ""
`shouldRespondWith` "k,extra\rxyyx,u\rxYYx,v"
`shouldRespondWith` ResponseMatcher {
matchBody = Just "k,extra\rxyyx,u\rxYYx,v"
, matchStatus = 200
, matchHeaders = ["Content-Type" <:> "text/csv"]
}
describe "Canonical location" $ do
it "Sets Content-Location with alphabetized params" $