Hello community,

here is the log from the commit of package ghc-wai-extra for openSUSE:Factory 
checked in at 2015-08-05 06:50:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-wai-extra (Old)
 and      /work/SRC/openSUSE:Factory/.ghc-wai-extra.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ghc-wai-extra"

Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-wai-extra/ghc-wai-extra.changes      
2015-07-16 17:19:00.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-wai-extra.new/ghc-wai-extra.changes 
2015-08-05 06:50:57.000000000 +0200
@@ -1,0 +2,7 @@
+Mon Jul 27 08:03:04 UTC 2015 - mimi...@gmail.com
+
+- update to 3.0.10
+* Network.Wai.Middleware.Routed module added 
+* Adding Request Body to RequestLogger
+
+-------------------------------------------------------------------

Old:
----
  wai-extra-3.0.8.2.tar.gz

New:
----
  wai-extra-3.0.10.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ghc-wai-extra.spec ++++++
--- /var/tmp/diff_new_pack.MTZ9Ht/_old  2015-08-05 06:50:58.000000000 +0200
+++ /var/tmp/diff_new_pack.MTZ9Ht/_new  2015-08-05 06:50:58.000000000 +0200
@@ -21,7 +21,7 @@
 %bcond_with tests
 
 Name:           ghc-wai-extra
-Version:        3.0.8.2
+Version:        3.0.10
 Release:        0
 Summary:        Provides some basic WAI handlers and middleware
 License:        MIT

++++++ wai-extra-3.0.8.2.tar.gz -> wai-extra-3.0.10.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wai-extra-3.0.8.2/ChangeLog.md 
new/wai-extra-3.0.10/ChangeLog.md
--- old/wai-extra-3.0.8.2/ChangeLog.md  2015-07-09 20:35:55.000000000 +0200
+++ new/wai-extra-3.0.10/ChangeLog.md   2015-07-24 19:15:26.000000000 +0200
@@ -1,3 +1,11 @@
+## 3.0.10
+
+* Adding Request Body to RequestLogger 
[#401](https://github.com/yesodweb/wai/pull/401)
+
+## 3.0.9
+
+* Network.Wai.Middleware.Routed module added
+
 ## 3.0.7
 
 * Add appearsSecure: check if a request appears to be using SSL even in the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/wai-extra-3.0.8.2/Network/Wai/Middleware/RequestLogger.hs 
new/wai-extra-3.0.10/Network/Wai/Middleware/RequestLogger.hs
--- old/wai-extra-3.0.8.2/Network/Wai/Middleware/RequestLogger.hs       
2015-07-09 20:35:55.000000000 +0200
+++ new/wai-extra-3.0.10/Network/Wai/Middleware/RequestLogger.hs        
2015-07-24 19:15:26.000000000 +0200
@@ -44,6 +44,7 @@
 import Data.Default.Class (Default (def))
 import Network.Wai.Logger
 import Network.Wai.Middleware.RequestLogger.Internal
+import Data.Text.Encoding (decodeUtf8')
 
 data OutputFormat = Apache IPAddrSource
                   | Detailed Bool -- ^ use colors?
@@ -222,6 +223,8 @@
                  return (req', body)
             _ -> return (req, [])
 
+    let reqbodylog _ = if null body then [""] else ansiColor White "  Request 
Body: " <> body <> ["\n"]
+        reqbody = concatMap (either (const [""]) reqbodylog . decodeUtf8') body
     postParams <- if requestMethod req `elem` ["GET", "HEAD"]
         then return []
         else do postParams <- liftIO $ allPostParams body
@@ -247,7 +250,7 @@
         -- log the status of the response
         cb $ mconcat $ map toLogStr $
             ansiMethod (requestMethod req) ++ [" ", rawPathInfo req, "\n"] ++
-            params ++
+            params ++ reqbody ++
             ansiColor White "  Accept: " ++ [accept, "\n"] ++
             if isRaw then [] else
                 ansiColor White "  Status: " ++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wai-extra-3.0.8.2/Network/Wai/Middleware/Routed.hs 
new/wai-extra-3.0.10/Network/Wai/Middleware/Routed.hs
--- old/wai-extra-3.0.8.2/Network/Wai/Middleware/Routed.hs      1970-01-01 
01:00:00.000000000 +0100
+++ new/wai-extra-3.0.10/Network/Wai/Middleware/Routed.hs       2015-07-24 
19:15:26.000000000 +0200
@@ -0,0 +1,39 @@
+-- |
+--
+-- Since 3.0.9
+module Network.Wai.Middleware.Routed
+    ( routedMiddleware
+    , hostedMiddleware
+    ) where
+
+import Network.Wai
+import Data.ByteString (ByteString)
+import Data.Text (Text)
+
+-- | Apply a middleware based on a test of pathInfo
+--
+-- example:
+--
+-- > let corsify = routedMiddleWare ("static" `elem`) addCorsHeaders
+--
+-- Since 3.0.9
+routedMiddleware :: ([Text] -> Bool) -- ^ Only use middleware if this pathInfo 
test returns True
+                 -> Middleware -- ^ middleware to apply the path prefix guard 
to
+                 -> Middleware -- ^ modified middleware
+routedMiddleware pathCheck middle app req
+  | pathCheck (pathInfo req) = middle app req
+  | otherwise                = app req
+
+-- | Only apply the middleware to certain hosts
+--
+-- Since 3.0.9
+hostedMiddleware :: ByteString -- ^ Domain the middleware applies to
+                 -> Middleware -- ^ middleware to apply the path prefix guard 
to
+                 -> Middleware -- ^ modified middleware
+hostedMiddleware domain middle app req
+  | hasDomain domain req = middle app req
+  | otherwise            = app req
+
+hasDomain :: ByteString -> Request -> Bool
+hasDomain domain req = maybe False (== domain) mHost
+  where mHost = requestHeaderHost req
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/wai-extra-3.0.8.2/test/Network/Wai/Middleware/RoutedSpec.hs 
new/wai-extra-3.0.10/test/Network/Wai/Middleware/RoutedSpec.hs
--- old/wai-extra-3.0.8.2/test/Network/Wai/Middleware/RoutedSpec.hs     
1970-01-01 01:00:00.000000000 +0100
+++ new/wai-extra-3.0.10/test/Network/Wai/Middleware/RoutedSpec.hs      
2015-07-24 19:15:26.000000000 +0200
@@ -0,0 +1,53 @@
+{-# LANGUAGE OverloadedStrings #-}
+module Network.Wai.Middleware.RoutedSpec
+    ( main
+    , spec
+    ) where
+
+import Test.Hspec
+
+import Network.Wai.Middleware.Routed
+import Network.Wai.Middleware.ForceSSL (forceSSL)
+
+import Network.HTTP.Types (methodPost, status200, status301, status307)
+import Network.Wai
+import Network.Wai.Test
+import Data.ByteString (ByteString)
+import Data.String (IsString)
+
+main :: IO ()
+main = hspec spec
+
+spec :: Spec
+spec = describe "forceSSL" $ do
+  it "routed middleware" $ do
+    let destination = "https://example.com/d/";
+    let routedSslJsonApp prefix = routedMiddleware (checkPrefix prefix) 
forceSSL jsonApp
+        checkPrefix p (p1:_) = p == p1
+        checkPrefix _ _ = False
+
+    flip runSession (routedSslJsonApp "r") $ do
+        res <- testDPath "http"
+        assertNoHeader location res
+        assertStatus 200 res
+        assertBody "{\"foo\":\"bar\"}" res
+
+    flip runSession (routedSslJsonApp "d") $ do
+        res2 <- testDPath "http"
+        assertHeader location destination res2
+        assertStatus 301 res2
+
+jsonApp :: Application
+jsonApp _req cps = cps $ responseLBS status200
+   [("Content-Type", "application/json")]
+      "{\"foo\":\"bar\"}"
+
+testDPath :: ByteString -> Session SResponse
+testDPath proto =
+    request $ flip setRawPathInfo "/d/" defaultRequest
+             { requestHeaders = [("X-Forwarded-Proto", proto)]
+             , requestHeaderHost = Just "example.com"
+             }
+
+location :: IsString ci => ci
+location = "Location"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wai-extra-3.0.8.2/wai-extra.cabal 
new/wai-extra-3.0.10/wai-extra.cabal
--- old/wai-extra-3.0.8.2/wai-extra.cabal       2015-07-09 20:35:55.000000000 
+0200
+++ new/wai-extra-3.0.10/wai-extra.cabal        2015-07-24 19:15:26.000000000 
+0200
@@ -1,5 +1,5 @@
 Name:                wai-extra
-Version:             3.0.8.2
+Version:             3.0.10
 Synopsis:            Provides some basic WAI handlers and middleware.
 description:
   Provides basic WAI handler and middleware functionality:
@@ -135,6 +135,7 @@
                      Network.Wai.Middleware.HttpAuth
                      Network.Wai.Middleware.StreamFile
                      Network.Wai.Middleware.ForceSSL
+                     Network.Wai.Middleware.Routed
                      Network.Wai.Parse
                      Network.Wai.Request
                      Network.Wai.UrlMap
@@ -153,6 +154,7 @@
                      Network.Wai.RequestSpec
                      Network.Wai.Middleware.ApprootSpec
                      Network.Wai.Middleware.ForceSSLSpec
+                     Network.Wai.Middleware.RoutedSpec
                      Network.Wai.Middleware.StripHeadersSpec
                      WaiExtraSpec
     build-depends:   base                      >= 4        && < 5


Reply via email to