hack2-contrib 2013.6.15.1 → 2013.6.16
raw patch · 5 files changed
+21/−45 lines, 5 filesdep −air-extradep −old-timedep −regexprPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies removed: air-extra, old-time, regexpr
API changes (from Hackage documentation)
- Hack2.Contrib.AirBackports: empty :: String -> Bool
- Hack2.Contrib.AirBackports: gsub :: String -> String -> String -> String
- Hack2.Contrib.AirBackports: match :: String -> String -> Maybe (RegexResult, MatchList)
- Hack2.Contrib.AirBackports: split :: String -> String -> [String]
- Hack2.Contrib.AirBackports: split' :: String -> [String]
- Hack2.Contrib.AirBackports: split_raw :: String -> String -> [String]
- Hack2.Contrib.AirBackports: strip :: String -> String
- Hack2.Contrib.AirBackports: sub :: String -> String -> String -> String
- Hack2.Contrib.AirBackports: type MatchList = [(Int, String)]
- Hack2.Contrib.AirBackports: type RegexResult = (String, (String, String))
- Hack2.Contrib.Middleware.RegexpRouter: regexp_router :: [RoutePath] -> Middleware
- Hack2.Contrib.Request: content_charset :: Env -> ByteString
- Hack2.Contrib.Request: media_type :: Env -> ByteString
- Hack2.Contrib.Request: media_type_params :: Env -> [(ByteString, ByteString)]
Files
- hack2-contrib.cabal +5/−11
- src/Hack2/Contrib/AirBackports.hs +5/−6
- src/Hack2/Contrib/Middleware/RegexpRouter.hs +0/−23
- src/Hack2/Contrib/Middleware/Static.hs +1/−1
- src/Hack2/Contrib/Request.hs +10/−4
hack2-contrib.cabal view
@@ -1,5 +1,5 @@ Name: hack2-contrib-Version: 2013.6.15.1+Version: 2013.6.16 Build-type: Simple Synopsis: Hack2 contrib Description: Common middlewares and utilities for Hack2@@ -21,7 +21,6 @@ , cgi , network , old-locale- , old-time , directory , filepath , containers@@ -31,15 +30,15 @@ , air , hack2 , utf8-string- , regexpr- , air-extra hs-source-dirs: src/ exposed-modules: + Hack2.Contrib.AirBackports Hack2.Contrib.Constants Hack2.Contrib.Middleware.BounceFavicon+ Hack2.Contrib.Middleware.Cascade Hack2.Contrib.Middleware.Censor Hack2.Contrib.Middleware.Config Hack2.Contrib.Middleware.ContentLength@@ -47,24 +46,19 @@ Hack2.Contrib.Middleware.Debug Hack2.Contrib.Middleware.File Hack2.Contrib.Middleware.Head+ Hack2.Contrib.Middleware.IOConfig Hack2.Contrib.Middleware.Inspect Hack2.Contrib.Middleware.NotFound- Hack2.Contrib.Middleware.RegexpRouter- -- Hack2.Contrib.Middleware.ShowExceptions Hack2.Contrib.Middleware.SimpleAccessLogger- -- Hack2.Contrib.Middleware.Hub Hack2.Contrib.Middleware.Static Hack2.Contrib.Middleware.URLMap- Hack2.Contrib.Middleware.IOConfig Hack2.Contrib.Middleware.UserMime- -- Hack2.Contrib.Middleware.UTF8Body- Hack2.Contrib.Middleware.Cascade Hack2.Contrib.Middleware.XForwardedForToRemoteHost Hack2.Contrib.Mime Hack2.Contrib.Request Hack2.Contrib.Response Hack2.Contrib.Utils- Hack2.Contrib.AirBackports+
src/Hack2/Contrib/AirBackports.hs view
@@ -6,9 +6,8 @@ import System.Directory import System.IO import System.Locale (defaultTimeLocale)-import System.Time import qualified System.IO.Unsafe as Unsafe-import Text.RegexPR+ import Data.Maybe import Air.Env hiding (Default, def)@@ -41,7 +40,7 @@ parse_time :: String -> String -> UTCTime parse_time = readTime defaultTimeLocale -+{- split_raw :: String -> String -> [String] split_raw re xs | xs.match re .isJust = splitRegexPR re xs@@ -70,6 +69,6 @@ empty :: String -> Bool empty s = case s.match("\\S") of- Just _ -> False- Nothing -> True- + Just _ -> False+ Nothing -> True+-}
− src/Hack2/Contrib/Middleware/RegexpRouter.hs
@@ -1,23 +0,0 @@--- | matching a list of regexp agains a path_info, if matched, consponding app--- is used, otherwise, pass the env down to lower middleware--module Hack2.Contrib.Middleware.RegexpRouter (regexp_router) where--import Data.Maybe-import Hack2-import Hack2.Contrib.Utils-import Hack2.Contrib.AirBackports-import Data.List (find)-import Air-import Prelude hiding ((.), (^), (>), (-))-import qualified Data.ByteString.Char8 as B--type RoutePath = (String, Application)--regexp_router :: [RoutePath] -> Middleware-regexp_router h app = \env ->- let path = env.path_info.B.unpack- in- case h.find (fst > flip match path > isJust) of- Nothing -> app env- Just (_, found_app) -> found_app env
src/Hack2/Contrib/Middleware/Static.hs view
@@ -17,7 +17,7 @@ import Prelude hiding ((.), (^), (>), (+)) import qualified Data.ByteString.Char8 as B import Data.ByteString.Char8 (ByteString)-import Air.Extra (u2b)+import Hack2.Contrib.AirBackports (u2b) static :: Maybe ByteString -> [ByteString] -> Middleware static root urls app = \env -> do
src/Hack2/Contrib/Request.hs view
@@ -14,6 +14,8 @@ import Prelude () import qualified Data.ByteString.Char8 as B import Hack2.Contrib.AirBackports+import Data.List (all)+import Data.Char (isSpace) input_bytestring :: Env -> IO ByteString@@ -31,12 +33,14 @@ content_type :: Env -> ByteString content_type env = env.httpHeaders.get _ContentType .fromMaybe "" +{- media_type :: Env -> ByteString media_type env = case env.content_type.B.unpack.split "\\s*[;,]\\s*" of [] -> "" x:_ -> x.lower.B.pack + media_type_params :: Env -> [(ByteString, ByteString)] media_type_params env | env.content_type.B.unpack.empty = []@@ -52,16 +56,18 @@ .map_fst (lower > B.pack) .map_snd (B.pack) + content_charset :: Env -> ByteString content_charset env = env.media_type_params.lookup "charset" .fromMaybe ""+-} host :: Env -> ByteString-host env = env.httpHeaders.get _Host .fromMaybe (env.server_name) .B.unpack.gsub ":\\d+\\z" "" .B.pack+host env = env.httpHeaders.get _Host .fromMaybe (env.server_name) .as_string (takeWhile (is_not ':')) params :: Env -> [(ByteString, ByteString)] params env =- if env.query_string.B.unpack.empty+ if env.query_string.B.unpack.all isSpace then [] else env.query_string.B.unpack.formDecode.map_both B.pack @@ -71,7 +77,7 @@ return - env .httpHeaders- .map_fst (B.unpack > upper > gsub "-" "_") -- cgi env use all cap letters+ .map_fst (B.unpack > upper > map (\x -> if x == '-' then '_' else x)) -- cgi env use all cap letters .map_snd B.unpack .(("REQUEST_METHOD", env.request_method.show) : ) -- for cgi request .flip decodeInput (_body.s2l)@@ -96,7 +102,7 @@ fullpath :: Env -> ByteString fullpath env = - if env.query_string.B.unpack.empty + if env.query_string.B.unpack.all isSpace then env.path else env.path + "?" + env.query_string