packages feed

wai-app-static 0.0.1.4 → 0.1.0

raw patch · 2 files changed

+26/−18 lines, 2 filesdep +blaze-builderdep +http-typesdep −web-routesdep ~waiPVP ok

version bump matches the API change (PVP)

Dependencies added: blaze-builder, http-types

Dependencies removed: web-routes

Dependency ranges changed: wai

API changes (from Hackage documentation)

- Network.Wai.Application.Static: staticAppPieces :: StaticSettings -> [String] -> Application
+ Network.Wai.Application.Static: staticAppPieces :: StaticSettings -> [Text] -> Application

Files

Network/Wai/Application/Static.hs view
@@ -31,6 +31,7 @@     ) where  import qualified Network.Wai as W+import qualified Network.HTTP.Types as H import Data.Map (Map) import qualified Data.Map as Map import Data.ByteString (ByteString)@@ -38,7 +39,6 @@ import qualified Data.ByteString.Char8 as S8 import qualified Data.ByteString.Lazy as L import Data.ByteString.Lazy.Char8 ()-import Web.Routes.Base (decodePathInfo, encodePathInfo) import System.PosixCompat.Files (fileSize, getFileStatus, modificationTime) import System.Posix.Types (FileOffset, EpochTime) import Control.Monad.IO.Class (liftIO)@@ -49,6 +49,9 @@ import qualified Text.Blaze.Renderer.Utf8    as HU import qualified Text.Blaze.Html5.Attributes as A +import Blaze.ByteString.Builder (toByteString, copyByteString)+import Data.Monoid (mappend)+ import Data.Time import Data.Time.Clock.POSIX import System.Locale (defaultTimeLocale)@@ -244,48 +247,52 @@  staticApp :: StaticSettings -> W.Application staticApp set req = do-    let pieces = decodePathInfo $ S8.unpack $ W.pathInfo req+    let pieces = W.pathInfo req     staticAppPieces set pieces req -staticAppPieces :: StaticSettings -> [String] -> W.Application+staticAppPieces :: StaticSettings -> [T.Text] -> W.Application staticAppPieces _ _ req     | W.requestMethod req /= "GET" = return $ W.responseLBS-        W.status405+        H.status405         [("Content-Type", "text/plain")]         "Only GET is supported"-staticAppPieces (StaticSettings folder indices mlisting getmime) pieces _ = liftIO $ do+staticAppPieces (StaticSettings folder indices mlisting getmime) piecesT _ = liftIO $ do+    let pieces = map T.unpack piecesT -- FIXME stick with Text     cp <- checkPieces folder indices pieces     case cp of         Redirect pieces' -> do-            let loc = S8.pack $ (concatMap (const "../") $ drop 1 pieces) ++ encodePathInfo pieces' []-            return $ W.responseLBS W.status301+            let loc =+                    toByteString $+                    foldr mappend (H.encodePathSegments $ map T.pack pieces') -- FIXME use Text+                    $ map (const $ copyByteString "../") $ drop 1 pieces+            return $ W.responseLBS H.status301                 [ ("Content-Type", "text/plain")                 , ("Location", loc)                 ] "Redirect"-        Forbidden -> return $ W.responseLBS W.status403+        Forbidden -> return $ W.responseLBS H.status403                         [ ("Content-Type", "text/plain")                         ] "Forbidden"-        NotFound -> return $ W.responseLBS W.status404+        NotFound -> return $ W.responseLBS H.status404                         [ ("Content-Type", "text/plain")                         ] "File not found"         FileResponse fp -> do             mimetype <- getmime fp             filesize <- fileSize `fmap` getFileStatus fp-            return $ W.ResponseFile W.status200+            return $ W.ResponseFile H.status200                         [ ("Content-Type", mimetype)                         , ("Content-Length", S8.pack $ show filesize)-                        ] fp+                        ] fp Nothing         DirectoryResponse fp ->             case mlisting of                 Just listing -> do                     lbs <- listing pieces fp-                    return $ W.responseLBS W.status200+                    return $ W.responseLBS H.status200                         [ ("Content-Type", "text/html; charset=utf-8")                         ] lbs-                Nothing -> return $ W.responseLBS W.status403+                Nothing -> return $ W.responseLBS H.status403                         [ ("Content-Type", "text/plain")                         ] "Directory listings disabled"-        SendContent mt lbs -> return $ W.responseLBS W.status200+        SendContent mt lbs -> return $ W.responseLBS H.status200                         [ ("Content-Type", mt)                         ] lbs 
wai-app-static.cabal view
@@ -1,5 +1,5 @@ name:            wai-app-static-version:         0.0.1.4+version:         0.1.0 license:         BSD3 license-file:    LICENSE author:          Michael Snoyman <michael@snoyman.com>@@ -10,14 +10,14 @@ stability:       Stable cabal-version:   >= 1.6 build-type:      Simple-homepage:        http://docs.yesodweb.com/+homepage:        http://www.yesodweb.com/ Extra-source-files: folder.png, haskell.png  library     build-depends:   base                      >= 4        && < 5-                   , wai                       >= 0.3      && < 0.4+                   , wai                       >= 0.4      && < 0.5                    , bytestring                >= 0.9.1.4  && < 0.10-                   , web-routes                >= 0.23     && < 0.24+                   , http-types                >= 0.6      && < 0.7                    , transformers              >= 0.2.2    && < 0.3                    , unix-compat               >= 0.2      && < 0.3                    , directory                 >= 1.0      && < 1.2@@ -27,6 +27,7 @@                    , old-locale                >= 1.0.0.2  && < 1.1                    , file-embed                >= 0.0.3.1  && < 0.1                    , text                      >= 0.5      && < 1.0+                   , blaze-builder             >= 0.2.1.4  && < 0.4     exposed-modules: Network.Wai.Application.Static     ghc-options:     -Wall