Hello community,

here is the log from the commit of package ghc-wai-extra for openSUSE:Factory 
checked in at 2015-07-16 17:18:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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-05-29 10:38:29.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-wai-extra.new/ghc-wai-extra.changes 
2015-07-16 17:19:00.000000000 +0200
@@ -1,0 +2,5 @@
+Mon Jul 13 05:56:11 UTC 2015 - [email protected]
+
+- update to 3.0.8.2
+
+-------------------------------------------------------------------

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

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

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

Other differences:
------------------
++++++ ghc-wai-extra.spec ++++++
--- /var/tmp/diff_new_pack.4G4tbG/_old  2015-07-16 17:19:00.000000000 +0200
+++ /var/tmp/diff_new_pack.4G4tbG/_new  2015-07-16 17:19:00.000000000 +0200
@@ -15,17 +15,18 @@
 # Please submit bugfixes or comments via http://bugs.opensuse.org/
 #
 
+
 %global pkg_name wai-extra
 
 %bcond_with tests
 
-Name:           ghc-%{pkg_name}
-Version:        3.0.7.1
+Name:           ghc-wai-extra
+Version:        3.0.8.2
 Release:        0
 Summary:        Provides some basic WAI handlers and middleware
+License:        MIT
 Group:          System/Libraries
 
-License:        MIT
 Url:            https://hackage.haskell.org/package/%{pkg_name}
 Source0:        
https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{version}.tar.gz
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
@@ -133,37 +134,29 @@
 %prep
 %setup -q -n %{pkg_name}-%{version}
 
-
 %build
 %ghc_lib_build
 
-
 %install
 %ghc_lib_install
 
-
 %check
 %if %{with tests}
 %cabal test
 %endif
 
-
 %post devel
 %ghc_pkg_recache
 
-
 %postun devel
 %ghc_pkg_recache
 
-
 %files -f %{name}.files
 %defattr(-,root,root,-)
 %doc LICENSE
 
-
 %files devel -f %{name}-devel.files
 %defattr(-,root,root,-)
 %doc README.md
 
-
 %changelog

++++++ wai-extra-3.0.7.1.tar.gz -> wai-extra-3.0.8.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/wai-extra-3.0.7.1/Network/Wai/Middleware/AddHeaders.hs 
new/wai-extra-3.0.8.2/Network/Wai/Middleware/AddHeaders.hs
--- old/wai-extra-3.0.7.1/Network/Wai/Middleware/AddHeaders.hs  2015-04-22 
07:02:35.000000000 +0200
+++ new/wai-extra-3.0.8.2/Network/Wai/Middleware/AddHeaders.hs  2015-07-09 
20:35:55.000000000 +0200
@@ -6,7 +6,7 @@
     ) where
 
 import Network.HTTP.Types   (ResponseHeaders, Header)
-import Network.Wai          (Middleware)
+import Network.Wai          (Middleware, modifyResponse, mapResponseHeaders)
 import Network.Wai.Internal (Response(..))
 import Data.ByteString      (ByteString)
 
@@ -18,13 +18,7 @@
 --
 -- Since 3.0.3
 
-addHeaders h app req respond = app req $ respond . addHeaders' (map (first 
CI.mk) h)
-
-mapHeader :: (ResponseHeaders -> ResponseHeaders) -> Response -> Response
-mapHeader f (ResponseFile s h b1 b2) = ResponseFile s (f h) b1 b2
-mapHeader f (ResponseBuilder s h b) = ResponseBuilder s (f h) b
-mapHeader f (ResponseStream s h b) = ResponseStream s (f h) b
-mapHeader _ r@(ResponseRaw _ _) = r
+addHeaders h = modifyResponse $ addHeaders' (map (first CI.mk) h)
 
 addHeaders' :: [Header] -> Response -> Response
-addHeaders' h = mapHeader (\hs -> h ++ hs)
+addHeaders' h = mapResponseHeaders (\hs -> h ++ hs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/wai-extra-3.0.7.1/Network/Wai/Middleware/RequestLogger.hs 
new/wai-extra-3.0.8.2/Network/Wai/Middleware/RequestLogger.hs
--- old/wai-extra-3.0.7.1/Network/Wai/Middleware/RequestLogger.hs       
2015-04-22 07:02:35.000000000 +0200
+++ new/wai-extra-3.0.8.2/Network/Wai/Middleware/RequestLogger.hs       
2015-07-09 20:35:55.000000000 +0200
@@ -118,15 +118,15 @@
     sendResponse res
 
 -- | Production request logger middleware.
--- Implemented on top of "logCallback", but prints to 'stdout'
+{-# NOINLINE logStdout #-}
 logStdout :: Middleware
 logStdout = unsafePerformIO $ mkRequestLogger def { outputFormat = Apache 
FromSocket }
 
 -- | Development request logger middleware.
--- Implemented on top of "logCallbackDev", but prints to 'stdout'
 --
 -- Flushes 'stdout' on each request, which would be inefficient in production 
use.
 -- Use "logStdout" in production.
+{-# NOINLINE logStdoutDev #-}
 logStdoutDev :: Middleware
 logStdoutDev = unsafePerformIO $ mkRequestLogger def
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/wai-extra-3.0.7.1/Network/Wai/Middleware/StripHeaders.hs 
new/wai-extra-3.0.8.2/Network/Wai/Middleware/StripHeaders.hs
--- old/wai-extra-3.0.7.1/Network/Wai/Middleware/StripHeaders.hs        
1970-01-01 01:00:00.000000000 +0100
+++ new/wai-extra-3.0.8.2/Network/Wai/Middleware/StripHeaders.hs        
2015-07-09 20:35:55.000000000 +0200
@@ -0,0 +1,45 @@
+-- This was written for one specific use case and then generalized.
+
+-- The specific use case was a JSON API with a consumer that would choke on the
+-- "Set-Cookie" response header. The solution was to test for the API's
+-- `pathInfo` in the Request and if it matched, filter the response headers.
+
+-- When using this, care should be taken not to strip out headers that are
+-- required for correct operation of the client (eg Content-Type).
+
+module Network.Wai.Middleware.StripHeaders
+    ( stripHeader
+    , stripHeaders
+    , stripHeaderIf
+    , stripHeadersIf
+    ) where
+
+import Network.Wai                       (Middleware, Request, modifyResponse, 
mapResponseHeaders, ifRequest)
+import Network.Wai.Internal (Response)
+import Data.ByteString                   (ByteString)
+
+import qualified Data.CaseInsensitive as CI
+
+stripHeader :: ByteString -> (Response -> Response)
+stripHeader h = mapResponseHeaders (filter (\ hdr -> fst hdr /= CI.mk h))
+
+stripHeaders :: [ByteString] -> (Response -> Response)
+stripHeaders hs =
+  let hnames = map CI.mk hs
+  in mapResponseHeaders (filter (\ hdr -> fst hdr `notElem` hnames))
+
+-- | If the request satisifes the provided predicate, strip headers matching
+-- the provided header name.
+--
+-- Since 3.0.8
+stripHeaderIf :: ByteString -> (Request -> Bool) -> Middleware
+stripHeaderIf h rpred =
+  ifRequest rpred (modifyResponse $ stripHeader h)
+
+-- | If the request satisifes the provided predicate, strip all headers whose
+-- header name is in the list of provided header names.
+--
+-- Since 3.0.8
+stripHeadersIf :: [ByteString] -> (Request -> Bool) -> Middleware
+stripHeadersIf hs rpred
+  = ifRequest rpred (modifyResponse $ stripHeaders hs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/wai-extra-3.0.7.1/test/Network/Wai/Middleware/StripHeadersSpec.hs 
new/wai-extra-3.0.8.2/test/Network/Wai/Middleware/StripHeadersSpec.hs
--- old/wai-extra-3.0.7.1/test/Network/Wai/Middleware/StripHeadersSpec.hs       
1970-01-01 01:00:00.000000000 +0100
+++ new/wai-extra-3.0.8.2/test/Network/Wai/Middleware/StripHeadersSpec.hs       
2015-07-09 20:35:55.000000000 +0200
@@ -0,0 +1,58 @@
+{-# LANGUAGE OverloadedStrings #-}
+module Network.Wai.Middleware.StripHeadersSpec
+    ( main
+    , spec
+    ) where
+
+import Test.Hspec
+
+import Network.Wai.Middleware.AddHeaders
+import Network.Wai.Middleware.StripHeaders
+
+import Control.Arrow (first)
+import Data.ByteString (ByteString)
+import Data.Monoid ((<>))
+import Network.HTTP.Types (status200)
+import Network.Wai
+import Network.Wai.Test
+
+import qualified Data.CaseInsensitive as CI
+
+
+main :: IO ()
+main = hspec spec
+
+
+spec :: Spec
+spec = describe "stripHeader" $ do
+    let host = "example.com"
+    let ciTestHeaders = map (first CI.mk) testHeaders
+
+    it "strips a specific header" $ do
+        resp1 <- runApp host (addHeaders testHeaders) defaultRequest
+        resp2 <- runApp host (stripHeaderIf "Foo" (const False) . addHeaders 
testHeaders) defaultRequest
+        resp3 <- runApp host (stripHeaderIf "Foo" (const True) . addHeaders 
testHeaders) defaultRequest
+
+        simpleHeaders resp1 `shouldBe` ciTestHeaders
+        simpleHeaders resp2 `shouldBe` ciTestHeaders
+        simpleHeaders resp3 `shouldBe` tail ciTestHeaders
+
+    it "strips specific set of headers" $ do
+        resp1 <- runApp host (addHeaders testHeaders) defaultRequest
+        resp2 <- runApp host (stripHeadersIf ["Bar", "Foo"] (const False) . 
addHeaders testHeaders) defaultRequest
+        resp3 <- runApp host (stripHeadersIf ["Bar", "Foo"] (const True) . 
addHeaders testHeaders) defaultRequest
+
+        simpleHeaders resp1 `shouldBe` ciTestHeaders
+        simpleHeaders resp2 `shouldBe` ciTestHeaders
+        simpleHeaders resp3 `shouldBe` [last ciTestHeaders]
+
+
+testHeaders :: [(ByteString, ByteString)]
+testHeaders = [("Foo", "fooey"), ("Bar", "barbican"), ("Baz", "bazooka")]
+
+
+runApp :: ByteString -> Middleware -> Request -> IO SResponse
+runApp host mw req = runSession
+    (request req { requestHeaderHost = Just $ host <> ":80" }) $ mw app
+  where
+    app _ respond = respond $ responseLBS status200 [] ""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wai-extra-3.0.7.1/wai-extra.cabal 
new/wai-extra-3.0.8.2/wai-extra.cabal
--- old/wai-extra-3.0.7.1/wai-extra.cabal       2015-04-22 07:02:35.000000000 
+0200
+++ new/wai-extra-3.0.8.2/wai-extra.cabal       2015-07-09 20:35:55.000000000 
+0200
@@ -1,5 +1,5 @@
 Name:                wai-extra
-Version:             3.0.7.1
+Version:             3.0.8.2
 Synopsis:            Provides some basic WAI handlers and middleware.
 description:
   Provides basic WAI handler and middleware functionality:
@@ -84,7 +84,7 @@
 Library
   Build-Depends:     base                      >= 4 && < 5
                    , bytestring                >= 0.9.1.4
-                   , wai                       >= 3.0      && < 3.1
+                   , wai                       >= 3.0.3.0  && < 3.1
                    , old-locale                >= 1.0.0.2  && < 1.1
                    , time                      >= 1.1.4
                    , network                   >= 2.2.1.5
@@ -95,7 +95,7 @@
                    , text                      >= 0.7
                    , case-insensitive          >= 0.2
                    , data-default-class
-                   , fast-logger               >= 2.1      && < 2.4
+                   , fast-logger               >= 2.1      && < 2.5
                    , wai-logger                >= 2.0      && < 2.3
                    , ansi-terminal
                    , resourcet                 >= 0.4.6    && < 1.2
@@ -130,6 +130,7 @@
                      Network.Wai.Middleware.MethodOverride
                      Network.Wai.Middleware.MethodOverridePost
                      Network.Wai.Middleware.Rewrite
+                     Network.Wai.Middleware.StripHeaders
                      Network.Wai.Middleware.Vhost
                      Network.Wai.Middleware.HttpAuth
                      Network.Wai.Middleware.StreamFile
@@ -152,6 +153,7 @@
                      Network.Wai.RequestSpec
                      Network.Wai.Middleware.ApprootSpec
                      Network.Wai.Middleware.ForceSSLSpec
+                     Network.Wai.Middleware.StripHeadersSpec
                      WaiExtraSpec
     build-depends:   base                      >= 4        && < 5
                    , wai-extra
@@ -168,7 +170,8 @@
                    , blaze-builder
                    , cookie
                    , time
-    ghc-options:     -Wall -Werror
+                   , case-insensitive
+    ghc-options:     -Wall
 
 source-repository head
   type:     git


Reply via email to