on master help sign in
More complete defaultCheckMime
commit9095069e877bae3426587bcb6ba645e7a66fa839 authorMichael Snoyman <michael@snoyman.com> dateTue 12 Mar 2013, 15:18 (14 years ago) parent3cef1d5
3 files changed+22−1
wai-extra/Network/Wai/Middleware/Gzip.hs+10−1 wai-extra/test/WaiExtraTest.hs+11 wai-extra/wai-extra.cabal+1
wai-extra/Network/Wai/Middleware/Gzip.hs+10−1
@@ -39,6 +39,7 @@ import qualified Data.Conduit.List as CL
3939import Data.Conduit.Blaze (builderToByteStringFlush)
4040import Blaze.ByteString.Builder (fromByteString)
4141import Control.Exception (try, SomeException)
42+import qualified Data.Set as Set
4243
4344data GzipSettings = GzipSettings
4445 { gzipFiles :: GzipFiles
@@ -52,7 +53,15 @@ instance Default GzipSettings where
5253 def = GzipSettings GzipIgnore defaultCheckMime
5354
5455defaultCheckMime :: S.ByteString -> Bool
55−defaultCheckMime bs = S8.isPrefixOf "text/" bs || S8.isPrefixOf "application/json" bs
56+defaultCheckMime bs =
57+ S8.isPrefixOf "text/" bs || bs' `Set.member` toCompress
58+ where
59+ bs' = fst $ S.breakByte 59 bs -- semicolon
60+ toCompress = Set.fromList
61+ [ "application/json"
62+ , "application/javascript"
63+ , "application/ecmascript"
64+ ]
5665
5766-- | Use gzip to compress the body of the response.
5867--
wai-extra/test/WaiExtraTest.hs+11
@@ -63,6 +63,7 @@ specs = do
6363 it "jsonp" caseJsonp
6464 it "gzip" caseGzip
6565 it "gzip not for MSIE" caseGzipMSIE
66+ it "defaultCheckMime" caseDefaultCheckMime
6667 it "vhost" caseVhost
6768 it "autohead" caseAutohead
6869 it "method override" caseMethodOverride
@@ -331,6 +332,16 @@ caseGzip = flip runSession gzipApp $ do
331332 assertNoHeader "Content-Encoding" sres2
332333 assertBody "test" sres2
333334
335+caseDefaultCheckMime :: Assertion
336+caseDefaultCheckMime = do
337+ let go x y = (x, defaultCheckMime x) `shouldBe` (x, y)
338+ go "application/json" True
339+ go "application/javascript" True
340+ go "application/something" False
341+ go "text/something" True
342+ go "foo/bar" False
343+ go "application/json; charset=utf-8" True
344+
334345caseGzipMSIE :: Assertion
335346caseGzipMSIE = flip runSession gzipApp $ do
336347 sres1 <- request defaultRequest
wai-extra/wai-extra.cabal+1
@@ -43,6 +43,7 @@ Library
4343 , resourcet >= 0.3 && < 0.5
4444 , void >= 0.5 && < 0.6
4545 , stringsearch >= 0.3 && < 0.4
46+ , containers
4647
4748 Exposed-modules: Network.Wai.Handler.CGI
4849 Network.Wai.Middleware.AcceptOverride