rest-core 0.32 → 0.32.0.1
raw patch · 3 files changed
+17/−10 lines, 3 files
Files
- CHANGELOG.md +3/−0
- rest-core.cabal +3/−3
- src/Rest/Driver/Perform.hs +11/−7
CHANGELOG.md view
@@ -1,5 +1,8 @@ # Changelog +#### 0.32.0.1+* Fix bug in Chrome when serving files with commas in name.+ ## 0.32 * Add `addHeader` dictionary combinator, to extend instead of replace
rest-core.cabal view
@@ -1,5 +1,5 @@ name: rest-core-version: 0.32+version: 0.32.0.1 description: Rest API library. synopsis: Rest API library. maintainer: code@silk.co@@ -47,7 +47,7 @@ , fclabels == 2.0.* , hxt >= 9.2 && < 9.4 , hxt-pickle-utils == 0.1.*- , json-schema == 0.6.*+ , json-schema >= 0.6 && < 0.8 , mtl >= 2.0 && < 2.3 , multipart >= 0.1.1 && < 0.2 , random == 1.0.*@@ -55,7 +55,7 @@ , rest-types == 1.10.* , safe >= 0.2 && < 0.4 , split >= 0.1 && < 0.3- , text >= 0.11 && < 1.2+ , text >= 0.11 && < 1.3 , transformers >= 0.2 && < 0.5 , unordered-containers == 0.2.* , uri-encode == 1.5.*
src/Rest/Driver/Perform.hs view
@@ -331,15 +331,18 @@ tryD (JsonO : _ ) JsonFormat = contentType JsonFormat >> ok (encode v) tryD (StringO : _ ) StringFormat = contentType StringFormat >> ok (UTF8.fromString v) tryD (MultipartO : _ ) _ = outputMultipart v- tryD (FileO : _ ) FileFormat = do let ext = (reverse . takeWhile (/='.') . reverse) $ snd v- mime <- fromMaybe "application/octet-stream" <$> lookupMimeType (map toLower ext)- setHeader "Content-Type" mime- setHeader "Cache-Control" "max-age=604800"- setHeader "Content-Disposition" ("filename=" ++ snd v)- ok (fst v)+ tryD (FileO : _ ) FileFormat =+ do let ext = (reverse . takeWhile (/='.') . reverse) $ snd v+ mime <- fromMaybe "application/octet-stream" <$> lookupMimeType (map toLower ext)+ setHeader "Content-Type" mime+ setHeader "Cache-Control" "max-age=604800"+ setHeader "Content-Disposition" ("filename=\"" ++ escapeQuotes (snd v) ++ "\"")+ ok (fst v) tryD [] t = throwError (UnsupportedFormat (show t)) tryD (_ : xs) t = tryD xs t ok r = setResponseCode 200 >> return r+ escapeQuotes :: String -> String+ escapeQuotes = intercalate "\\\"" . splitOn "\"" outputMultipart :: Rest m => [BodyPart] -> m UTF8.ByteString outputMultipart vs =@@ -373,7 +376,8 @@ [ ["image"] , xs ] -> xs >>= img _ -> [] - trim = reverse . dropWhile isSpace . reverse . dropWhile isSpace+ trim = f . f+ where f = reverse . dropWhile isSpace txt "*" = [XmlFormat, JsonFormat, StringFormat] txt "json" = [JsonFormat]