hack2-contrib 2011.6.19 → 2011.6.20
raw patch · 15 files changed
+49/−39 lines, 15 filesdep ~hack2PVP ok
version bump matches the API change (PVP)
Dependency ranges changed: hack2
API changes (from Hackage documentation)
+ Hack2.Contrib.Utils: l2s :: ByteString -> ByteString
+ Hack2.Contrib.Utils: s2l :: ByteString -> ByteString
Files
- hack2-contrib.cabal +2/−2
- src/Hack2/Contrib/Constants.hs +1/−1
- src/Hack2/Contrib/Middleware/ContentType.hs +1/−1
- src/Hack2/Contrib/Middleware/File.hs +9/−8
- src/Hack2/Contrib/Middleware/Head.hs +1/−1
- src/Hack2/Contrib/Middleware/RegexpRouter.hs +1/−1
- src/Hack2/Contrib/Middleware/SimpleAccessLogger.hs +1/−1
- src/Hack2/Contrib/Middleware/Static.hs +2/−2
- src/Hack2/Contrib/Middleware/URLMap.hs +1/−1
- src/Hack2/Contrib/Middleware/UserMime.hs +2/−2
- src/Hack2/Contrib/Middleware/XForwardedForToRemoteHost.hs +1/−1
- src/Hack2/Contrib/Mime.hs +1/−1
- src/Hack2/Contrib/Request.hs +6/−5
- src/Hack2/Contrib/Response.hs +4/−4
- src/Hack2/Contrib/Utils.hs +16/−8
hack2-contrib.cabal view
@@ -1,5 +1,5 @@ Name: hack2-contrib-Version: 2011.6.19+Version: 2011.6.20 Build-type: Simple Synopsis: Hack2 contrib Description: Common middlewares and utilities that helps working with Hack2@@ -29,7 +29,7 @@ , data-default >= 0.2 , time , air >= 2011.6.19- , hack2 >= 2011.6.19+ , hack2 >= 2011.6.20 , utf8-string -- , ansi-wl-pprint , regexpr
src/Hack2/Contrib/Constants.hs view
@@ -6,7 +6,7 @@ import Air.Light import Prelude hiding ((.)) import Data.Map-import Data.ByteString.Lazy.Char8 (ByteString)+import Data.ByteString.Char8 (ByteString) status_with_no_entity_body :: [Int] status_with_no_entity_body = [100 .. 199] ++ [204, 304]
src/Hack2/Contrib/Middleware/ContentType.hs view
@@ -8,7 +8,7 @@ import Hack2.Contrib.Response import Air.Light import Prelude hiding ((.), (^), (>), (-))-import Data.ByteString.Lazy.Char8 (ByteString)+import Data.ByteString.Char8 (ByteString) content_type :: ByteString -> Middleware
src/Hack2/Contrib/Middleware/File.hs view
@@ -19,8 +19,9 @@ import Prelude () import System.Directory import System.FilePath-import qualified Data.ByteString.Lazy.Char8 as B-import Data.ByteString.Lazy.Char8 (ByteString)+import qualified Data.ByteString.Char8 as B+import qualified Data.ByteString.Lazy.Char8 as Lazy+import Data.ByteString.Char8 (ByteString) file :: Maybe ByteString -> Middleware file root _ = \env -> do@@ -50,7 +51,7 @@ where serving path = do- content <- path.B.readFile+ content <- path.Lazy.readFile size <- path.b2u.file_size ^ from_i mtime_str <- path.b2u.file_mtime ^ httpdate @@ -71,27 +72,27 @@ def .set_status 404 .set_content_type _TextPlain- .set_content_length (msg.B.length)+ .set_content_length (msg.Lazy.length) .set_body_bytestring msg - where msg = "No permission: " + path + "\n"+ where msg = "No permission: " + s2l path + "\n" not_found :: ByteString -> IO Response not_found path = return $ def .set_status 404 .set_content_type _TextPlain- .set_content_length (msg.B.length)+ .set_content_length (msg.Lazy.length) .set_body_bytestring msg - where msg = "File not found: " + path + "\n"+ where msg = "File not found: " + s2l path + "\n" forbidden :: IO Response forbidden = return - def .set_status 403 .set_content_type _TextPlain- .set_content_length (msg.B.length)+ .set_content_length (msg.Lazy.length) .set_body_bytestring msg where msg = "Forbidden\n"
src/Hack2/Contrib/Middleware/Head.hs view
@@ -6,7 +6,7 @@ import Air.Env hiding (def, head) import Prelude ()-import qualified Data.ByteString.Lazy.Char8 as B+import qualified Data.ByteString.Char8 as B import Data.Default (def) head :: Middleware
src/Hack2/Contrib/Middleware/RegexpRouter.hs view
@@ -10,7 +10,7 @@ import List (find) import Air import Prelude hiding ((.), (^), (>), (-))-import qualified Data.ByteString.Lazy.Char8 as B+import qualified Data.ByteString.Char8 as B type RoutePath = (String, Application)
src/Hack2/Contrib/Middleware/SimpleAccessLogger.hs view
@@ -12,7 +12,7 @@ import Air.Env hiding (Default, def) import Data.Maybe import Prelude ()-import qualified Data.ByteString.Lazy.Char8 as B+import qualified Data.ByteString.Char8 as B import System.IO import Control.Concurrent
src/Hack2/Contrib/Middleware/Static.hs view
@@ -15,8 +15,8 @@ import List (find, isPrefixOf) import Air.Light import Prelude hiding ((.), (^), (>), (+))-import qualified Data.ByteString.Lazy.Char8 as B-import Data.ByteString.Lazy.Char8 (ByteString)+import qualified Data.ByteString.Char8 as B+import Data.ByteString.Char8 (ByteString) static :: Maybe ByteString -> [ByteString] -> Middleware static root urls app = \env -> do
src/Hack2/Contrib/Middleware/URLMap.hs view
@@ -17,7 +17,7 @@ import List (find, isPrefixOf) import Air.Env hiding (Default, def) import Prelude ()-import qualified Data.ByteString.Lazy.Char8 as B+import qualified Data.ByteString.Char8 as B type RoutePath = (B.ByteString, Application)
src/Hack2/Contrib/Middleware/UserMime.hs view
@@ -8,8 +8,8 @@ import Hack2.Contrib.Utils import Air.Light import Prelude hiding ((.), (-))-import qualified Data.ByteString.Lazy.Char8 as B-import Data.ByteString.Lazy.Char8 (ByteString)+import qualified Data.ByteString.Char8 as B+import Data.ByteString.Char8 (ByteString) user_mime :: [(ByteString, ByteString)] -> Middleware user_mime h app env = do
src/Hack2/Contrib/Middleware/XForwardedForToRemoteHost.hs view
@@ -5,7 +5,7 @@ import Hack2 import Air.Env hiding (Default, def) import Prelude ()-import Data.ByteString.Lazy.Char8 ()+import Data.ByteString.Char8 () x_forwarded_for_to_remote_host :: Middleware x_forwarded_for_to_remote_host app = \env ->
src/Hack2/Contrib/Mime.hs view
@@ -6,7 +6,7 @@ import Air.Light import Prelude hiding ((.)) import qualified Data.Map as M-import Data.ByteString.Lazy.Char8 (ByteString)+import Data.ByteString.Char8 (ByteString) lookup_mime_type :: ByteString -> Maybe ByteString lookup_mime_type = flip M.lookup mime_types
src/Hack2/Contrib/Request.hs view
@@ -3,7 +3,7 @@ module Hack2.Contrib.Request where -import Data.ByteString.Lazy.Char8 (ByteString)+import Data.ByteString.Char8 (ByteString) import Data.Maybe import Hack2 hiding (body) import Hack2.Contrib.Constants@@ -12,11 +12,12 @@ import Network.CGI.Cookie import Network.CGI.Protocol import Prelude ()-import qualified Data.ByteString.Lazy.Char8 as B+import qualified Data.ByteString.Char8 as B+import qualified Data.ByteString.Lazy.Char8 as Lazy import Hack2.Contrib.AirBackports -input_bytestring :: Env -> IO ByteString+input_bytestring :: Env -> IO Lazy.ByteString input_bytestring = hack_input > unHackEnumerator > fromEnumerator scheme :: Env -> ByteString@@ -80,9 +81,9 @@ where to_headers (k, input) = case input.inputFilename of- Nothing -> [(k.B.pack, input.inputValue)]+ Nothing -> [(k.B.pack, input.inputValue.l2s)] Just name -> - [ (k.B.pack, input.inputValue)+ [ (k.B.pack, input.inputValue.l2s) , ("hack2_input_file_name_" + k.B.pack, name.B.pack) ]
src/Hack2/Contrib/Response.hs view
@@ -3,20 +3,20 @@ module Hack2.Contrib.Response where -import Data.ByteString.Lazy.Char8 (ByteString)+import Data.ByteString.Char8 (ByteString) import Data.Maybe import Hack2 import Hack2.Contrib.Constants import Hack2.Contrib.Utils import Air.Env hiding (def) import Prelude ()-import qualified Data.ByteString.Lazy.Char8 as B+import qualified Data.ByteString.Lazy.Char8 as Lazy import Hack2.Contrib.AirBackports import Data.Default (def) import Data.Enumerator (run_, enumList, Enumerator, ($$)) import qualified Data.ByteString.Char8 as Strict -body_bytestring :: Response -> IO B.ByteString+body_bytestring :: Response -> IO Lazy.ByteString body_bytestring r = r.body.unHackEnumerator.fromEnumerator redirect :: ByteString -> Maybe Int -> Response -> Response@@ -53,7 +53,7 @@ set_body :: HackEnumerator -> Response -> Response set_body s r = r { body = s } -set_body_bytestring :: B.ByteString -> Response -> Response+set_body_bytestring :: Lazy.ByteString -> Response -> Response set_body_bytestring b r = let enum = b.toEnumerator :: (forall a. Enumerator Strict.ByteString IO a) in
src/Hack2/Contrib/Utils.hs view
@@ -4,7 +4,7 @@ module Hack2.Contrib.Utils where import Control.Arrow ((<<<))-import Data.ByteString.Lazy.Char8 (ByteString)+import Data.ByteString.Char8 (ByteString) import Data.Default import Data.List (lookup) import Data.Time@@ -15,7 +15,8 @@ import Network.URI hiding (path) import Prelude () import System.Locale (defaultTimeLocale)-import qualified Data.ByteString.Lazy.Char8 as B+import qualified Data.ByteString.Char8 as B+import qualified Data.ByteString.Lazy.Char8 as Lazy import qualified Data.Map as M import Hack2.Contrib.AirBackports @@ -26,17 +27,24 @@ import Data.Enumerator (run_, enumList, Enumerator, ($$)) -fromEnumerator :: Monad m => Enumerator Strict.ByteString m B.ByteString -> m B.ByteString+fromEnumerator :: Monad m => Enumerator Strict.ByteString m Lazy.ByteString -> m Lazy.ByteString fromEnumerator m = run_ - m $$ EB.consume -toEnumerator :: Monad m => B.ByteString -> Enumerator Strict.ByteString m a-toEnumerator = enumList 1 < B.toChunks+toEnumerator :: Monad m => Lazy.ByteString -> Enumerator Strict.ByteString m a+toEnumerator = enumList 1 < Lazy.toChunks -withEnumerator :: Monad m => (B.ByteString -> B.ByteString) -> Enumerator Strict.ByteString m B.ByteString -> m (Enumerator Strict.ByteString m a)+withEnumerator :: Monad m => (Lazy.ByteString -> Lazy.ByteString) -> Enumerator Strict.ByteString m Lazy.ByteString -> m (Enumerator Strict.ByteString m a) withEnumerator f enum = do bytes <- fromEnumerator enum return - toEnumerator - f bytes +l2s :: Lazy.ByteString -> Strict.ByteString+l2s = Strict.concat < Lazy.toChunks++s2l :: Strict.ByteString -> Lazy.ByteString+s2l = Lazy.fromChunks < return++ empty_app :: Application empty_app = return def @@ -52,8 +60,8 @@ get :: (Eq a) => a -> [(a, b)] -> Maybe b get = lookup -bytesize :: ByteString -> Int-bytesize = B.length > from_i+bytesize :: Lazy.ByteString -> Int+bytesize = Lazy.length > from_i show_bytestring :: (Show a) => a -> ByteString show_bytestring = show > B.pack