packages feed

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 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