packages feed

hack2-handler-snap-server 2011.10.30 → 2012.1.19

raw patch · 2 files changed

+21/−18 lines, 2 filesdep ~hack2PVP ok

version bump matches the API change (PVP)

Dependency ranges changed: hack2

API changes (from Hackage documentation)

Files

hack2-handler-snap-server.cabal view
@@ -1,5 +1,5 @@ Name:                 hack2-handler-snap-server-Version:              2011.10.30+Version:              2012.1.19 Build-type:           Simple Synopsis:             Hack2 Snap server handler Description:          Hack2 Snap server handler@@ -20,7 +20,7 @@                     , network                     , bytestring                     , data-default >= 0.2-                    , hack2 >= 2011.6.20+                    , hack2 >= 2012.1.19                     , containers                     , mtl                     , enumerator
src/Hack2/Handler/SnapServer.hs view
@@ -39,28 +39,31 @@ import System.Directory (createDirectory, doesDirectoryExist) import Control.Monad (when) -{- -{  requestMethod  :: RequestMethod-,  scriptName     :: ByteString-,  pathInfo       :: ByteString-,  queryString    :: ByteString-,  serverName     :: ByteString-,  serverPort     :: Int-,  httpHeaders    :: [(ByteString, ByteString)]-,  hackVersion    :: (Int, Int, Int)-,  hackUrlScheme  :: HackUrlScheme-,  hackInput      :: HackEnumerator-,  hackErrors     :: HackErrors-,  hackHeaders    :: [(ByteString, ByteString)]+-- backports from earlier hack2 utils --}+import qualified Data.ByteString.Lazy.Char8 as Lazy+import qualified Data.Map as M +import qualified Data.ByteString.Char8 as Strict +import qualified Data.Enumerator.Binary as EB+import qualified Data.Enumerator.List as EL++import Data.Enumerator (run_, enumList, Enumerator, ($$))++fromEnumerator :: Monad m => Enumerator Strict.ByteString m Lazy.ByteString -> m Lazy.ByteString+fromEnumerator m = run_ - m $$ EB.consume++toEnumerator :: Monad m => Lazy.ByteString -> Enumerator Strict.ByteString m a+toEnumerator = enumList 1 < Lazy.toChunks+ requestToEnv :: Snap.Request -> IO Env requestToEnv request = do   (Snap.SomeEnumerator some_enumerator) <- readIORef - request.SnapInternal.rqBody   +  _requestBody <- fromEnumerator some_enumerator+     return - def        {@@ -72,7 +75,7 @@     , serverPort     = request.Snap.rqServerPort     , httpHeaders    = request.SnapInternal.rqHeaders.Snap.Headers.toList.map caseInsensitiveHeaderToHeader     , hackUrlScheme  = if request.Snap.rqIsSecure then HTTPS else HTTP-    , hackInput      = HackEnumerator some_enumerator+    , hackInput      = _requestBody.l2s     , hackHeaders    =        [         ("RemoteHost", request.Snap.rqRemoteAddr)@@ -103,7 +106,7 @@   Snap.emptyResponse     . Snap.setResponseCode (response.status)     . (\r -> r { SnapInternal.rspHeaders = response.headers.map headerToCaseInsensitiveHeader.Snap.Headers.fromList })-    . Snap.setResponseBody (response.body.unHackEnumerator $= EL.map fromByteString)+    . Snap.setResponseBody (response.body.s2l.toEnumerator $= EL.map fromByteString)