snap-core 0.9.3.1 → 0.9.4.0
raw patch · 4 files changed
+36/−16 lines, 4 filesdep +hashable
Dependencies added: hashable
Files
- snap-core.cabal +2/−1
- src/Snap/Internal/Http/Types.hs +2/−0
- src/Snap/Internal/Parsing.hs +13/−13
- test/suite/Snap/Core/Tests.hs +19/−2
snap-core.cabal view
@@ -1,5 +1,5 @@ name: snap-core-version: 0.9.3.1+version: 0.9.4.0 synopsis: Snap: A Haskell Web Framework (core interfaces and types) description:@@ -141,6 +141,7 @@ directory >= 1 && < 2, enumerator >= 0.4.15 && < 0.5, filepath >= 1.1 && < 2.0,+ hashable >= 1.1 && < 1.2, HUnit >= 1.2 && < 2, MonadCatchIO-transformers >= 0.2.1 && < 0.4, mtl >= 2.0 && < 2.2,
src/Snap/Internal/Http/Types.hs view
@@ -289,6 +289,8 @@ -- | The parameter mapping decoded from the POST body. Note that Snap -- only auto-decodes POST request bodies when the request's -- @Content-Type@ is @application/x-www-form-urlencoded@.+ -- For @multipart/form-data@ use 'Snap.Util.FileUploads.handleFileUploads'+ -- to decode the POST request and fill this mapping. , rqPostParams :: Params }
src/Snap/Internal/Parsing.hs view
@@ -8,27 +8,27 @@ ------------------------------------------------------------------------------ import Blaze.ByteString.Builder import Control.Applicative-import Control.Arrow (first, second)+import Control.Arrow (first, second) import Control.Monad import Data.Attoparsec.Char8 import Data.Bits-import Data.ByteString.Char8 (ByteString)-import qualified Data.ByteString.Char8 as S-import Data.ByteString.Internal (c2w, w2c)-import qualified Data.ByteString.Lazy.Char8 as L-import qualified Data.CaseInsensitive as CI-import Data.CaseInsensitive (CI)-import Data.Char hiding (isDigit, isSpace)+import Data.ByteString.Char8 (ByteString)+import qualified Data.ByteString.Char8 as S+import Data.ByteString.Internal (c2w, w2c)+import qualified Data.ByteString.Lazy.Char8 as L+import Data.CaseInsensitive (CI)+import qualified Data.CaseInsensitive as CI+import Data.Char hiding (isDigit, isSpace) import Data.Int-import Data.List (intersperse)-import Data.Map (Map)-import qualified Data.Map as Map+import Data.List (intersperse)+import Data.Map (Map)+import qualified Data.Map as Map import Data.Maybe import Data.Monoid import Data.Word import GHC.Exts-import GHC.Word (Word8(..))-import Prelude hiding (head, take, takeWhile)+import GHC.Word (Word8 (..))+import Prelude hiding (head, take, takeWhile) ------------------------------------------------------------------------------ import Snap.Internal.Http.Types import Snap.Internal.Parsing.FastSet (FastSet)
test/suite/Snap/Core/Tests.hs view
@@ -22,7 +22,8 @@ import Data.IORef import Data.Maybe (isJust) import Data.Monoid-import Data.Text ()+import Data.Text (Text)+import qualified Data.Text.Encoding as T import Data.Text.Lazy () import qualified Data.Map as Map import Prelude hiding (catch)@@ -69,7 +70,9 @@ , testEvalSnap , testLocalRequest , testRedirect- , testBracketSnap ]+ , testBracketSnap+ , testPathArgs+ ] expectSpecificException :: Exception e => e -> IO a -> IO ()@@ -671,3 +674,17 @@ assertEqual "redirect path" (Just "/bar/foo") $ getHeader "Location" rsp2 assertEqual "redirect status" 307 $ rspStatus rsp2 assertEqual "status description" "Temporary Redirect" $ rspStatusReason rsp2+++testPathArgs :: Test+testPathArgs = testCase "types/pathArgs" $ do+ (_, rsp) <- goPath "%e4%b8%ad" m+ b <- getBody rsp+ assertEqual "pathargs url- and utf8-decodes" "ok" b++ where+ m = pathArg f++ f x = if x == ("\x4e2d" :: Text)+ then writeBS "ok"+ else writeBS $ "not ok: " `mappend` T.encodeUtf8 x