packages feed

http-pony-serve-wai 0.1.0.3 → 0.1.0.4

raw patch · 4 files changed

+30/−50 lines, 4 filesdep +pipes-safedep +transformersdep ~blaze-builderdep ~case-insensitivedep ~http-typesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: pipes-safe, transformers

Dependency ranges changed: blaze-builder, case-insensitive, http-types, pipes-bytestring, wai

API changes (from Hackage documentation)

- Network.HTTP.Pony.Serve.Wai.Parser: parseRequestURITokens :: ByteString -> (ByteString, ByteString)
- Network.HTTP.Pony.Serve.Wai: fromWAI :: (Request -> (Response -> IO ResponseReceived) -> IO ResponseReceived) -> App
+ Network.HTTP.Pony.Serve.Wai: fromWAI :: (Request -> (Response -> IO ResponseReceived) -> IO ResponseReceived) -> App (SafeT IO)
- Network.HTTP.Pony.Serve.Wai: parseRequest :: Request -> IO Request
+ Network.HTTP.Pony.Serve.Wai: parseRequest :: Request (SafeT IO) -> (SafeT IO) Request
- Network.HTTP.Pony.Serve.Wai.Type: type App = Request -> IO Response
+ Network.HTTP.Pony.Serve.Wai.Type: type App m = Request m -> m (Response m)
- Network.HTTP.Pony.Serve.Wai.Type: type Request = Request (MessageType RequestLine) ByteString IO ()
+ Network.HTTP.Pony.Serve.Wai.Type: type Request m = Request (MessageType RequestLine) ByteString m ()
- Network.HTTP.Pony.Serve.Wai.Type: type Response = Response (MessageType ResponseLine) ByteString IO ()
+ Network.HTTP.Pony.Serve.Wai.Type: type Response m = Response (MessageType ResponseLine) ByteString m ()

Files

http-pony-serve-wai.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/  name:                http-pony-serve-wai-version:             0.1.0.3+version:             0.1.0.4 synopsis:            Serve a WAI application with http-pony -- description:          license:             BSD3@@ -19,30 +19,30 @@  library   exposed-modules:     Network.HTTP.Pony.Serve.Wai-                     , Network.HTTP.Pony.Serve.Wai.Parser                      , Network.HTTP.Pony.Serve.Wai.Helper                      , Network.HTTP.Pony.Serve.Wai.Type   -- other-modules:          -- other-extensions:    OverloadedStrings   build-depends:       base >=4.9 && <4.10                      , attoparsec >=0.13-                     , blaze-builder+                     , blaze-builder >= 0.4.0.2                      , bytestring >=0.10-                     , case-insensitive-                     , http-types-                     , pipes >=4.1-                     , pipes-bytestring-                     , wai+                     , case-insensitive >= 1.2.0.7                      , http-pony-transformer-http >= 0.1.0.0                      , http-pony-transformer-startline>= 0.1.0.0+                     , http-types >= 0.9.1+                     , pipes >=4.1+                     , pipes-bytestring >= 2.1.3+                     , pipes-safe >= 2.2.4+                     , wai >= 3.2.1.1+                     , transformers >= 0.5.2                       -- testing-                     -- , pipes-safe-                     -- , pipes-network-                     -- , http-pony-transformer-case-insensitive >= 0.1.0.1                      -- , foreign-store-                     -- , http-pony+                     -- , http-pony >= 0.1.0.3+                     -- , http-pony-transformer-case-insensitive >= 0.1.0.1                      -- , lens+                     -- , pipes-network    hs-source-dirs:      src                        -- test
src/Network/HTTP/Pony/Serve/Wai.hs view
@@ -1,10 +1,12 @@ -- | Wai +{-# LANGUAGE Rank2Types #-} {-# LANGUAGE OverloadedStrings #-}  module Network.HTTP.Pony.Serve.Wai where  import           Blaze.ByteString.Builder (toLazyByteString)+import           Control.Monad.Trans.Class (lift) import           Data.Attoparsec.ByteString (parse, eitherResult) import           Data.ByteString (ByteString) import qualified Data.ByteString.Char8 as B@@ -16,18 +18,18 @@                                       , ResponseReceived(ResponseReceived)) import           Pipes (next) import           Pipes.ByteString (fromLazy)+import           Pipes.Safe (SafeT, runSafeT, MonadSafe)  import           Network.HTTP.Pony.Serve.Wai.Helper ((-))-import           Network.HTTP.Pony.Serve.Wai.Parser (parseRequestURITokens) import           Network.HTTP.Pony.Serve.Wai.Type (Request, Response, App) import           Prelude hiding ((-))  -parseRequest :: Request -> IO Wai.Request+parseRequest :: Request (SafeT IO) -> (SafeT IO) Wai.Request parseRequest (((method, uri, version), headers), body) = do-  bodyRef <- newIORef (Just body)+  bodyRef <- lift - newIORef (Just body) -  let (rawPathInfo, rawQueryString) = parseRequestURITokens uri+  let (rawPathInfo, rawQueryString) = B.break (== '?') uri       (pathInfo, queryString) = HTTP.decodePath uri    pure Wai.defaultRequest@@ -43,7 +45,7 @@         bodyC <- readIORef bodyRef         case bodyC of           Just _body -> do-            r <- next _body+            r <- runSafeT - next _body             case r of               Right (x, bodyC) -> do                 writeIORef bodyRef (Just bodyC)@@ -62,14 +64,15 @@ fromWAI :: ( Wai.Request                 -> (Wai.Response -> IO ResponseReceived)                 -> IO ResponseReceived-              ) -> App+              ) -> App (SafeT IO) fromWAI app r = do   waiRequest <- parseRequest r +   let waiC :: (Wai.Response -> IO ResponseReceived) -> IO ResponseReceived       waiC = app waiRequest -  responseRef <- newIORef Nothing+  responseRef <- lift - newIORef Nothing    let version = Wai.httpVersion waiRequest @@ -88,9 +91,9 @@           _ -> do             pure ResponseReceived -  waiC - callback+  lift - waiC - callback -  maybeResponse <- readIORef responseRef+  maybeResponse <- lift - readIORef responseRef    case maybeResponse of     Just response -> do
− src/Network/HTTP/Pony/Serve/Wai/Parser.hs
@@ -1,24 +0,0 @@--- | Parser--{-# LANGUAGE OverloadedStrings #-}--module Network.HTTP.Pony.Serve.Wai.Parser where--import qualified Data.Attoparsec.ByteString.Char8 as Char-import           Data.ByteString.Char8 (ByteString)-import qualified Data.ByteString.Char8 as B---- requestURITokens :: Parser (ByteString, ByteString)--- requestURITokens = do---   ( (,) <$> Char.takeTill (== '?')---         <*> (Char.char '?' >> takeByteString)---     )----   <|>----   ( (,) <$> takeByteString---         <*> pure mempty---     )--parseRequestURITokens :: ByteString -> (ByteString, ByteString)-parseRequestURITokens = B.break (== '?')
src/Network/HTTP/Pony/Serve/Wai/Type.hs view
@@ -1,14 +1,15 @@ module Network.HTTP.Pony.Serve.Wai.Type where  -import Data.ByteString (ByteString)-import Data.CaseInsensitive (CI)+import           Data.ByteString (ByteString)+import           Data.CaseInsensitive (CI) import qualified Network.HTTP.Pony.Transformer.HTTP.Type as HTTP import qualified Network.HTTP.Pony.Transformer.StartLine.Type as StartLine+import           Pipes.Safe (SafeT)  type MessageType a = (a, [(CI ByteString, ByteString)]) -type Request = HTTP.Request (MessageType StartLine.RequestLine) ByteString IO ()-type Response = HTTP.Response (MessageType StartLine.ResponseLine) ByteString IO ()+type Request m = HTTP.Request (MessageType StartLine.RequestLine) ByteString m ()+type Response m = HTTP.Response (MessageType StartLine.ResponseLine) ByteString m () -type App = Request -> IO Response+type App m = Request m -> m (Response m)