packages feed

wai-middleware-static 0.7.0.1 → 0.8.0

raw patch · 3 files changed

+23/−83 lines, 3 filesdep +mime-typesdep ~http-typesdep ~timedep ~waiPVP ok

version bump matches the API change (PVP)

Dependencies added: mime-types

Dependency ranges changed: http-types, time, wai

API changes (from Hackage documentation)

- Network.Wai.Middleware.Static: fm_etag :: FileMeta -> !ByteString
- Network.Wai.Middleware.Static: fm_fileName :: FileMeta -> FilePath
- Network.Wai.Middleware.Static: fm_lastModified :: FileMeta -> !ByteString
- Network.Wai.Middleware.Static: instance Eq FileMeta
- Network.Wai.Middleware.Static: instance Monoid Policy
- Network.Wai.Middleware.Static: instance Show FileMeta
+ Network.Wai.Middleware.Static: [fm_etag] :: FileMeta -> !ByteString
+ Network.Wai.Middleware.Static: [fm_fileName] :: FileMeta -> FilePath
+ Network.Wai.Middleware.Static: [fm_lastModified] :: FileMeta -> !ByteString
+ Network.Wai.Middleware.Static: getMimeType :: FilePath -> MimeType
+ Network.Wai.Middleware.Static: instance GHC.Base.Monoid Network.Wai.Middleware.Static.Policy
+ Network.Wai.Middleware.Static: instance GHC.Classes.Eq Network.Wai.Middleware.Static.FileMeta
+ Network.Wai.Middleware.Static: instance GHC.Show.Show Network.Wai.Middleware.Static.FileMeta

Files

Network/Wai/Middleware/Static.hs view
@@ -19,12 +19,13 @@     , addBase, addSlash, contains, hasPrefix, hasSuffix, noDots, isNotAbsolute, only     , -- * Utilities       tryPolicy+    , -- * MIME types+      getMimeType     ) where  import Caching.ExpiringCacheMap.HashECM (newECMIO, lookupECM, CacheSettings(..), consistentDuration) import Control.Monad.Trans (liftIO) import Data.List-import Data.Maybe (fromMaybe) #if !(MIN_VERSION_base(4,8,0)) import Data.Monoid #endif@@ -32,18 +33,17 @@ import Data.Time.Clock.POSIX import Network.HTTP.Types (status200, status304) import Network.HTTP.Types.Header (RequestHeaders)+import Network.Mime (MimeType, defaultMimeLookup) import Network.Wai import System.Directory (doesFileExist, getModificationTime) #if !(MIN_VERSION_time(1,5,0)) import System.Locale #endif import qualified Crypto.Hash.SHA1 as SHA1-import qualified Data.ByteString as B import qualified Data.ByteString as BS import qualified Data.ByteString.Base16 as B16 import qualified Data.ByteString.Char8 as BSC import qualified Data.ByteString.Lazy as BSL-import qualified Data.Map as M import qualified Data.Text as T import qualified System.FilePath as FP @@ -261,82 +261,6 @@                 , fm_fileName = fp                 } -type Ascii = B.ByteString--getMimeType :: FilePath -> Ascii-getMimeType = go . extensions-    where go [] = defaultMimeType-          go (ext:exts) = fromMaybe (go exts) $ M.lookup ext defaultMimeTypes--extensions :: FilePath -> [String]-extensions [] = []-extensions fp = case dropWhile (/= '.') fp of-                    [] -> []-                    s -> let ext = tail s-                         in ext : extensions ext--defaultMimeType :: Ascii-defaultMimeType = "application/octet-stream"---- This list taken from snap-core's Snap.Util.FileServe-defaultMimeTypes :: M.Map String Ascii-defaultMimeTypes = M.fromList [-  ( "asc"     , "text/plain"                        ),-  ( "asf"     , "video/x-ms-asf"                    ),-  ( "asx"     , "video/x-ms-asf"                    ),-  ( "avi"     , "video/x-msvideo"                   ),-  ( "bz2"     , "application/x-bzip"                ),-  ( "c"       , "text/plain"                        ),-  ( "class"   , "application/octet-stream"          ),-  ( "conf"    , "text/plain"                        ),-  ( "cpp"     , "text/plain"                        ),-  ( "css"     , "text/css"                          ),-  ( "cxx"     , "text/plain"                        ),-  ( "dtd"     , "text/xml"                          ),-  ( "dvi"     , "application/x-dvi"                 ),-  ( "gif"     , "image/gif"                         ),-  ( "gz"      , "application/x-gzip"                ),-  ( "hs"      , "text/plain"                        ),-  ( "htm"     , "text/html"                         ),-  ( "html"    , "text/html"                         ),-  ( "jar"     , "application/x-java-archive"        ),-  ( "jpeg"    , "image/jpeg"                        ),-  ( "jpg"     , "image/jpeg"                        ),-  ( "js"      , "text/javascript"                   ),-  ( "json"    , "application/json"                  ),-  ( "log"     , "text/plain"                        ),-  ( "m3u"     , "audio/x-mpegurl"                   ),-  ( "mov"     , "video/quicktime"                   ),-  ( "mp3"     , "audio/mpeg"                        ),-  ( "mp4"     , "video/mp4"                         ),-  ( "mpeg"    , "video/mpeg"                        ),-  ( "mpg"     , "video/mpeg"                        ),-  ( "ogg"     , "application/ogg"                   ),-  ( "ogv"     , "video/ogg"                         ),-  ( "pac"     , "application/x-ns-proxy-autoconfig" ),-  ( "pdf"     , "application/pdf"                   ),-  ( "png"     , "image/png"                         ),-  ( "ps"      , "application/postscript"            ),-  ( "qt"      , "video/quicktime"                   ),-  ( "sig"     , "application/pgp-signature"         ),-  ( "spl"     , "application/futuresplash"          ),-  ( "svg"     , "image/svg+xml"                     ),-  ( "swf"     , "application/x-shockwave-flash"     ),-  ( "tar"     , "application/x-tar"                 ),-  ( "tar.bz2" , "application/x-bzip-compressed-tar" ),-  ( "tar.gz"  , "application/x-tgz"                 ),-  ( "tbz"     , "application/x-bzip-compressed-tar" ),-  ( "text"    , "text/plain"                        ),-  ( "tgz"     , "application/x-tgz"                 ),-  ( "torrent" , "application/x-bittorrent"          ),-  ( "ttf"     , "application/x-font-truetype"       ),-  ( "txt"     , "text/plain"                        ),-  ( "wav"     , "audio/x-wav"                       ),-  ( "wax"     , "audio/x-ms-wax"                    ),-  ( "wma"     , "audio/x-ms-wma"                    ),-  ( "wmv"     , "video/x-ms-wmv"                    ),-  ( "xbm"     , "image/x-xbitmap"                   ),-  ( "xml"     , "text/xml"                          ),-  ( "xpm"     , "image/x-xpixmap"                   ),-  ( "xwd"     , "image/x-xwindowdump"               ),-  ( "zip"     , "application/zip"                   ) ]+-- | Guess MIME type from file extension+getMimeType :: FilePath -> MimeType+getMimeType = defaultMimeLookup . T.pack
changelog.md view
@@ -1,3 +1,18 @@+## 0.8.0+* The `mime-types` library is now used to lookup MIME types from extensions.+  As a result, some extensions now map to different MIME types. They are:++  Extension | `wai-middleware-static`       | `mime-types` |+  --------- | ----------------------------- | ------------ |+  `class`   | `application/octet-stream`    | `application/java-vm`+  `dtd`     | `text/xml`                    | `application/xml-dtd`+  `jar`     | `application/x-java-archive`  | `application/java-archive`+  `js`      | `text/javascript`             | `application/javascript`+  `ogg`     | `application/ogg`             | `audio/ogg`+  `ttf`     | `application/x-font-truetype` | `application/x-font-ttf`++* Exposed `getMimeType` function [Shimuuar]+ ## 0.7.0.1 * Fixed Windows build (by replacing `unix` dependency with equivalent `directory`   function)
wai-middleware-static.cabal view
@@ -1,5 +1,5 @@ Name:                wai-middleware-static-Version:             0.7.0.1+Version:             0.8.0 Synopsis:            WAI middleware that serves requests to static files. Homepage:            https://github.com/scotty-web/wai-middleware-static Bug-reports:         https://github.com/scotty-web/wai-middleware-static/issues@@ -33,6 +33,7 @@                        expiring-cache-map >= 0.0.5    && < 0.1,                        filepath           >= 1.3.0.1  && < 1.5,                        http-types         >= 0.8.2    && < 0.9,+                       mime-types         >= 0.1.0.3  && < 0.2,                        mtl                >= 2.1.2    && < 2.3,                        old-locale         >= 1.0      && < 1.1,                        text               >= 0.11.3.1 && < 1.3,