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)