Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package ghc-wai-extra for openSUSE:Factory 
checked in at 2021-02-16 22:39:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-wai-extra (Old)
 and      /work/SRC/openSUSE:Factory/.ghc-wai-extra.new.28504 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ghc-wai-extra"

Tue Feb 16 22:39:07 2021 rev:8 rq:870882 version:3.1.6

Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-wai-extra/ghc-wai-extra.changes      
2021-01-20 18:25:38.267415791 +0100
+++ /work/SRC/openSUSE:Factory/.ghc-wai-extra.new.28504/ghc-wai-extra.changes   
2021-02-16 22:48:45.342571245 +0100
@@ -1,0 +2,8 @@
+Tue Jan 19 09:00:23 UTC 2021 - [email protected]
+
+- Update wai-extra to version 3.1.6.
+  ## 3.1.6
+
+  * Remove unused dependencies [#837](https://github.com/yesodweb/wai/pull/837)
+
+-------------------------------------------------------------------

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

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

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

Other differences:
------------------
++++++ ghc-wai-extra.spec ++++++
--- /var/tmp/diff_new_pack.c5xMkl/_old  2021-02-16 22:48:46.106571843 +0100
+++ /var/tmp/diff_new_pack.c5xMkl/_new  2021-02-16 22:48:46.110571845 +0100
@@ -19,7 +19,7 @@
 %global pkg_name wai-extra
 %bcond_with tests
 Name:           ghc-%{pkg_name}
-Version:        3.1.5
+Version:        3.1.6
 Release:        0
 Summary:        Provides some basic WAI handlers and middleware
 License:        MIT
@@ -36,31 +36,27 @@
 BuildRequires:  ghc-containers-devel
 BuildRequires:  ghc-cookie-devel
 BuildRequires:  ghc-data-default-class-devel
-BuildRequires:  ghc-deepseq-devel
 BuildRequires:  ghc-directory-devel
 BuildRequires:  ghc-fast-logger-devel
 BuildRequires:  ghc-http-types-devel
 BuildRequires:  ghc-http2-devel
 BuildRequires:  ghc-iproute-devel
 BuildRequires:  ghc-network-devel
-BuildRequires:  ghc-old-locale-devel
 BuildRequires:  ghc-resourcet-devel
 BuildRequires:  ghc-rpm-macros
 BuildRequires:  ghc-streaming-commons-devel
 BuildRequires:  ghc-text-devel
 BuildRequires:  ghc-time-devel
 BuildRequires:  ghc-transformers-devel
-BuildRequires:  ghc-unix-compat-devel
 BuildRequires:  ghc-unix-devel
 BuildRequires:  ghc-vault-devel
-BuildRequires:  ghc-void-devel
 BuildRequires:  ghc-wai-devel
 BuildRequires:  ghc-wai-logger-devel
 BuildRequires:  ghc-word8-devel
-BuildRequires:  ghc-zlib-devel
 ExcludeArch:    %{ix86}
 %if %{with tests}
 BuildRequires:  ghc-hspec-devel
+BuildRequires:  ghc-zlib-devel
 %endif
 
 %description

++++++ wai-extra-3.1.5.tar.gz -> wai-extra-3.1.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wai-extra-3.1.5/ChangeLog.md 
new/wai-extra-3.1.6/ChangeLog.md
--- old/wai-extra-3.1.5/ChangeLog.md    2021-01-03 16:18:40.000000000 +0100
+++ new/wai-extra-3.1.6/ChangeLog.md    2021-01-18 15:22:11.000000000 +0100
@@ -1,5 +1,9 @@
 # Changelog for wai-extra
 
+## 3.1.6
+
+* Remove unused dependencies [#837](https://github.com/yesodweb/wai/pull/837)
+
 ## 3.1.5
 
 * `Network.Wai.Middleware.RealIp`: Add a new middleware to infer the remote IP 
address from headers [#834](https://github.com/yesodweb/wai/pull/834)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wai-extra-3.1.5/Network/Wai/Middleware/StreamFile.hs 
new/wai-extra-3.1.6/Network/Wai/Middleware/StreamFile.hs
--- old/wai-extra-3.1.5/Network/Wai/Middleware/StreamFile.hs    2021-01-03 
09:10:14.000000000 +0100
+++ new/wai-extra-3.1.6/Network/Wai/Middleware/StreamFile.hs    2021-01-18 
15:22:11.000000000 +0100
@@ -8,7 +8,7 @@
 import Network.Wai.Internal
 import Network.Wai (Middleware, responseToStream)
 import qualified Data.ByteString.Char8 as S8
-import System.PosixCompat (getFileStatus, fileSize, FileOffset)
+import System.Directory (getFileSize)
 import Network.HTTP.Types (hContentLength)
 
 -- |Convert ResponseFile type responses into ResponseStream type
@@ -36,8 +36,3 @@
                let hs' = (hContentLength, (S8.pack (show len))) : hs
                sendResponse $ responseStream s hs' body
       _ -> sendResponse res
-
-getFileSize :: FilePath -> IO FileOffset
-getFileSize path = do
-    stat <- getFileStatus path
-    return (fileSize stat)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wai-extra-3.1.5/Network/Wai/Test.hs 
new/wai-extra-3.1.6/Network/Wai/Test.hs
--- old/wai-extra-3.1.5/Network/Wai/Test.hs     2021-01-03 09:10:14.000000000 
+0100
+++ new/wai-extra-3.1.6/Network/Wai/Test.hs     2021-01-18 15:22:11.000000000 
+0100
@@ -44,9 +44,6 @@
 import qualified Control.Monad.Trans.State as ST
 import Control.Monad.Trans.Reader (runReaderT, ask)
 import Control.Monad (unless)
-import Control.DeepSeq (deepseq)
-import Control.Exception (throwIO, Exception)
-import Data.Typeable (Typeable)
 import qualified Data.Map as Map
 import qualified Web.Cookie as Cookie
 import Data.ByteString (ByteString)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/wai-extra-3.1.5/test/Network/Wai/Middleware/RequestSizeLimitSpec.hs 
new/wai-extra-3.1.6/test/Network/Wai/Middleware/RequestSizeLimitSpec.hs
--- old/wai-extra-3.1.5/test/Network/Wai/Middleware/RequestSizeLimitSpec.hs     
1970-01-01 01:00:00.000000000 +0100
+++ new/wai-extra-3.1.6/test/Network/Wai/Middleware/RequestSizeLimitSpec.hs     
2021-01-18 15:22:11.000000000 +0100
@@ -0,0 +1,114 @@
+{-# LANGUAGE OverloadedStrings #-}
+module Network.Wai.Middleware.RequestSizeLimitSpec (main, spec) where
+
+import Test.Hspec
+
+import Network.Wai
+import Network.Wai.Test
+import Data.ByteString (ByteString)
+import qualified Data.ByteString as S
+import qualified Data.ByteString.Lazy as L
+import qualified Data.ByteString.Char8 as S8
+import Network.Wai.Middleware.RequestSizeLimit
+import Network.HTTP.Types.Status (status200, status413)
+import Control.Monad (replicateM)
+import Data.Aeson (encode, object, (.=))
+import Data.Text (Text)
+
+main :: IO ()
+main = hspec spec
+
+spec :: Spec
+spec = describe "RequestSizeLimitMiddleware" $ do
+  describe "Plain text response" $ do
+    runStrictBodyTests "returns 413 for request bodies > 10 bytes, when 
streaming the whole body" tenByteLimitSettings "1234567890a" isStatus413
+    runStrictBodyTests "returns 200 for request bodies <= 10 bytes, when 
streaming the whole body" tenByteLimitSettings "1234567890" isStatus200
+
+  describe "JSON response" $ do
+    runStrictBodyTests "returns 413 for request bodies > 10 bytes, when 
streaming the whole body" tenByteLimitJSONSettings "1234567890a" (isStatus413 
>> isJSONContentType)
+    runStrictBodyTests "returns 200 for request bodies <= 10 bytes, when 
streaming the whole body" tenByteLimitJSONSettings "1234567890" (isStatus200)
+
+  describe "Per-request sizes" $ do
+
+    it "allows going over the limit, when the path has been whitelisted" $ do
+      let req = SRequest defaultRequest
+            { pathInfo = ["upload", "image"]
+            } "1234567890a"
+          settings =
+            setMaxLengthForRequest 
+              (\req -> if pathInfo req == ["upload", "image"] then pure $ Just 
20 else pure $ Just 10)
+              defaultRequestSizeLimitSettings
+      resp <- runStrictBodyApp settings req
+      isStatus200 resp
+
+  describe "streaming chunked bodies" $ do
+    let streamingReq = defaultRequest
+                    { isSecure = False
+                    , requestBodyLength = ChunkedBody
+                    , requestBody = return "a"
+                    }
+    it "413s if the combined chunk size is > the size limit" $ do
+      resp <- runStreamingChunkApp 11 tenByteLimitSettings streamingReq
+      simpleStatus resp `shouldBe` status413
+    it "200s if the combined chunk size is <= the size limit" $ do
+      resp <- runStreamingChunkApp 10 tenByteLimitSettings streamingReq
+      simpleStatus resp `shouldBe` status200
+
+  where
+    tenByteLimitSettings = 
+      setMaxLengthForRequest
+        (\_req -> pure $ Just 10)
+        defaultRequestSizeLimitSettings
+    tenByteLimitJSONSettings = 
+      setOnLengthExceeded
+        (\_maxLen _app _req sendResponse -> sendResponse $ responseLBS 
status413 [("Content-Type", "application/json")] (encode $ object ["error" .= 
("request size too large" :: Text)]))
+        tenByteLimitSettings
+
+    isStatus413 = \sResp -> simpleStatus sResp `shouldBe` status413
+    isStatus200 = \sResp -> simpleStatus sResp `shouldBe` status200
+    isJSONContentType = \sResp -> simpleHeaders sResp `shouldBe` 
[("Content-Type", "application/json")]
+
+data LengthType = UseKnownLength | UseChunked
+  deriving (Show, Eq)
+
+runStrictBodyTests :: String -> RequestSizeLimitSettings -> ByteString -> 
(SResponse -> Expectation) -> Spec
+runStrictBodyTests name settings requestBody runExpectations = describe name $ 
do
+  it "chunked" $ do
+    let req = mkRequestWithBytestring requestBody UseChunked
+    resp <- runStrictBodyApp settings req
+
+    runExpectations resp
+  it "non-chunked" $ do
+    let req = mkRequestWithBytestring requestBody UseKnownLength
+    resp <- runStrictBodyApp settings req
+
+    runExpectations resp
+  where
+    mkRequestWithBytestring :: ByteString -> LengthType -> SRequest
+    mkRequestWithBytestring body lengthType = SRequest defaultRequest
+      { requestHeaders =
+          if lengthType == UseKnownLength
+              then [("content-length", S8.pack $ show $ S.length body)]
+              else []
+      , requestMethod = "POST"
+      , requestBodyLength =
+          if lengthType == UseKnownLength
+              then KnownLength $ fromIntegral $ S.length body
+              else ChunkedBody
+      } $ L.fromChunks $ map S.singleton $ S.unpack body
+
+runStrictBodyApp :: RequestSizeLimitSettings -> SRequest -> IO SResponse
+runStrictBodyApp settings req = runSession
+    (srequest req) $ (requestSizeLimitMiddleware settings) app
+  where
+    app req respond = do
+      _body <- strictRequestBody req
+      respond $ responseLBS status200 [] ""
+
+runStreamingChunkApp :: Int -> RequestSizeLimitSettings -> Request -> IO 
SResponse
+runStreamingChunkApp times settings req = runSession
+    (request req) $ (requestSizeLimitMiddleware settings) app
+  where
+    app req respond = do
+      _chunks <- replicateM times (getRequestBodyChunk req)
+      respond $ responseLBS status200 [] ""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wai-extra-3.1.5/wai-extra.cabal 
new/wai-extra-3.1.6/wai-extra.cabal
--- old/wai-extra-3.1.5/wai-extra.cabal 2021-01-03 16:18:40.000000000 +0100
+++ new/wai-extra-3.1.6/wai-extra.cabal 2021-01-18 15:22:11.000000000 +0100
@@ -1,5 +1,5 @@
 Name:                wai-extra
-Version:             3.1.5
+Version:             3.1.6
 Synopsis:            Provides some basic WAI handlers and middleware.
 description:
   Provides basic WAI handler and middleware functionality:
@@ -90,10 +90,9 @@
   Build-Depends:     base                      >= 4.10 && < 5
                    , bytestring                >= 0.10.4
                    , wai                       >= 3.0.3.0  && < 3.3
-                   , old-locale                >= 1.0.0.2  && < 1.1
                    , time                      >= 1.1.4
                    , network                   >= 2.6.1.0
-                   , directory                 >= 1.0.1
+                   , directory                 >= 1.2.7.0
                    , transformers              >= 0.2.2
                    , http-types                >= 0.7
                    , text                      >= 0.7
@@ -103,16 +102,12 @@
                    , wai-logger                >= 2.3.2
                    , ansi-terminal
                    , resourcet                 >= 0.4.6    && < 1.3
-                   , void                      >= 0.5
                    , containers
                    , base64-bytestring
                    , word8
-                   , deepseq
                    , streaming-commons         >= 0.2
-                   , unix-compat
                    , cookie
                    , vault
-                   , zlib
                    , aeson
                    , iproute                   >= 1.7.8
                    , http2
@@ -189,10 +184,11 @@
                      Network.Wai.RequestSpec
                      Network.Wai.Middleware.ApprootSpec
                      Network.Wai.Middleware.ForceSSLSpec
+                     Network.Wai.Middleware.RealIpSpec
+                     Network.Wai.Middleware.RequestSizeLimitSpec
                      Network.Wai.Middleware.RoutedSpec
                      Network.Wai.Middleware.StripHeadersSpec
                      Network.Wai.Middleware.TimeoutSpec
-                     Network.Wai.Middleware.RealIpSpec
                      WaiExtraSpec
     build-depends:   base                      >= 4        && < 5
                    , wai-extra

Reply via email to