packages feed

hack-contrib 2009.8.18 → 2009.11.1

raw patch · 5 files changed

+70/−15 lines, 5 filesdep +utf8-stringdep ~hackdep ~mps

Dependencies added: utf8-string

Dependency ranges changed: hack, mps

Files

changelog.md view
@@ -1,3 +1,10 @@+2009.11.1+---------++### Fix++* flush io in simple access logger+ 2009.8.18 --------- 
hack-contrib.cabal view
@@ -1,5 +1,5 @@ Name:                 hack-contrib-Version:              2009.8.18+Version:              2009.11.1 Build-type:           Simple Synopsis:             Hack contrib Description:          Common middlewares and utilities that helps working with Hack@@ -15,7 +15,24 @@  library   ghc-options: -Wall-  build-depends: base >=4 && < 5, cgi, network, haskell98, old-locale, old-time, directory, filepath, containers, bytestring, ansi-wl-pprint, data-default >= 0.2, ansi-wl-pprint, time, pureMD5, mps >= 2009.8.18.1, hack >= 2009.7.15+  build-depends: +                    base >=4 && < 5+                  , cgi+                  , network+                  , haskell98+                  , old-locale+                  , old-time+                  , directory+                  , filepath+                  , containers+                  , bytestring+                  , data-default >= 0.2+                  , time+                  , pureMD5+                  , mps >= 2009.9.18+                  , hack >= 2009.10.30+                  , utf8-string+                  , ansi-wl-pprint   hs-source-dirs: src/   exposed-modules:                       @@ -29,7 +46,6 @@                     Hack.Contrib.Middleware.ETag                     Hack.Contrib.Middleware.File                     Hack.Contrib.Middleware.Head-                    Hack.Contrib.Middleware.Hub                     Hack.Contrib.Middleware.Inspect                     Hack.Contrib.Middleware.Lambda                     Hack.Contrib.Middleware.Lucky@@ -37,10 +53,12 @@                     Hack.Contrib.Middleware.RegexpRouter                     Hack.Contrib.Middleware.ShowExceptions                     Hack.Contrib.Middleware.SimpleAccessLogger+                    Hack.Contrib.Middleware.Hub                     Hack.Contrib.Middleware.Static                     Hack.Contrib.Middleware.URLMap                     Hack.Contrib.Middleware.IOConfig                     Hack.Contrib.Middleware.UserMime+                    Hack.Contrib.Middleware.UTF8Body                     Hack.Contrib.Mime                     Hack.Contrib.Request                     Hack.Contrib.Response
src/Hack/Contrib/Middleware/SimpleAccessLogger.hs view
@@ -2,21 +2,35 @@  import Data.Maybe import Hack-import Hack.Contrib.Middleware.Hub-import Hack.Contrib.Request+import Hack.Contrib.Request hiding (referer)+import Hack.Contrib.Constants import Hack.Contrib.Utils-import MPS.Light-import Prelude hiding ((.), (^), (>), log)+import MPS (simple_time_format)+import MPS.Env+import Data.Maybe+import Prelude ()+import qualified Data.ByteString.Char8 as B+import System.IO  -program :: String-program = "SimpleAccessLogger"- simple_access_logger :: Maybe (String -> IO ()) -> Middleware simple_access_logger stream app = \env -> do-  let my_stream = stream.fromMaybe (env.hack_errors)-  let log       = simple_logger my_stream program--  Info .log (env.url.unescape_uri)+  r <- app env+  time <- now ^ format_time simple_time_format +  let puts' x     = x.B.pack.B.putStrLn >> hFlush stdout+      puts        = stream.fromMaybe puts'+      method      = env.request_method.show+      http_status = env.hack_url_scheme.show +      access_path = env.fullpath.unescape_uri+      +      fields =+        [ env.remote_host+        , "-"+        , "[" ++ time ++ "]"+        , "\"" ++ method ++ " " ++ access_path ++ " " ++ http_status ++ "\""+        , r.status.show+        , r.headers.get _ContentLength .fromMaybe "-"+        ]   -  app env+  puts - fields.join " "+  return r
+ src/Hack/Contrib/Middleware/UTF8Body.hs view
@@ -0,0 +1,14 @@+module Hack.Contrib.Middleware.UTF8Body (utf8_body) where++import MPS.Env+import Prelude ()+import MPS.Heavy+import Hack+import Data.ByteString.Lazy.Char8 (unpack)+import Data.ByteString.Lazy.UTF8 (fromString)++utf8_body :: Middleware+utf8_body app = \env -> do+  r <- app env+  let raw_body = r.body+  return r {body = raw_body.unpack.unescape_xml.fromString}
src/Hack/Contrib/Utils.hs view
@@ -80,6 +80,7 @@ hack_input        :: Env -> ByteString hack_errors       :: Env -> HackErrors custom            :: Env -> [(String, String)]+remote_host       :: Env -> String  request_method  = requestMethod script_name     = scriptName@@ -92,4 +93,5 @@ hack_input      = hackInput hack_errors     = hackErrors custom          = hackHeaders+remote_host     = remoteHost