packages feed

http-pony-serve-wai 0.1.0.0 → 0.1.0.1

raw patch · 3 files changed

+39/−31 lines, 3 filesdep −networkdep −transformersdep ~bytestring

Dependencies removed: network, transformers

Dependency ranges changed: bytestring

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.0+version:             0.1.0.1 synopsis:            Serve a WAI application with http-pony -- description:          license:             BSD3@@ -14,6 +14,7 @@ build-type:          Simple extra-source-files:  ChangeLog.md cabal-version:       >=1.10+Homepage:            https://github.com/nfjinjing/http-pony-serve-wai  library   exposed-modules:     Network.HTTP.Pony.Serve.Wai@@ -25,14 +26,23 @@   build-depends:       base >=4.9 && <4.10                      , attoparsec >=0.13                      , blaze-builder-                     , bytestring >=0.10 && <0.11+                     , bytestring >=0.10                      , case-insensitive                      , http-types-                     , network                      , pipes >=4.1                      , pipes-bytestring-                     , transformers >=0.5                      , wai +                     -- testing+                     -- , pipes-safe+                     -- , pipes-network+                     -- , http-pony-transformer-http >= 0.1.0.2+                     -- , http-pony-transformer-case-insensitive >= 0.1.0.1+                     -- , foreign-store+                     -- , http-pony+                     -- , lens+   hs-source-dirs:      src+                       -- test+   default-language:    Haskell2010
src/Network/HTTP/Pony/Serve/Wai.hs view
@@ -9,20 +9,24 @@ import           Data.ByteString (ByteString) import qualified Data.ByteString.Char8 as B import           Data.IORef (newIORef, readIORef, writeIORef)-import           Data.Semigroup+import           Data.Semigroup ((<>))+import qualified Network.HTTP.Types as HTTP import qualified Network.Wai as Wai-import           Network.Wai.Internal hiding (Request, Response)-import           Pipes (yield, for, next)+import           Network.Wai.Internal (Response(ResponseBuilder)+                                      , ResponseReceived(ResponseReceived))+import           Pipes (next) import           Pipes.ByteString (fromLazy)-import qualified Network.HTTP.Types as HTTP  import           Network.HTTP.Pony.Serve.Wai.Helper ((-))-import           Network.HTTP.Pony.Serve.Wai.Parser-import           Network.HTTP.Pony.Serve.Wai.Type+import           Network.HTTP.Pony.Serve.Wai.Parser (parseRequestURITokens+                                                    , requestLineTokens)+import           Network.HTTP.Pony.Serve.Wai.Type (Request, Response, App) import           Prelude hiding ((-)) -parseRequest :: Request ByteString IO a -> IO (Either String Wai.Request)-parseRequest (requestLine, headers, body) = do+++parseRequest :: Request -> IO (Either String Wai.Request)+parseRequest ((requestLine, headers), body) = do   bodyRef <- newIORef (Just body)    let eitherRequest =@@ -32,12 +36,12 @@            pure - Wai.defaultRequest                   {-                    requestMethod = method-                  , httpVersion = version-                  , rawPathInfo = pathInfo-                  , requestHeaders = headers-                  , rawQueryString = queryString-                  , requestBody = do+                    Wai.requestMethod = method+                  , Wai.httpVersion = version+                  , Wai.rawPathInfo = pathInfo+                  , Wai.requestHeaders = headers+                  , Wai.rawQueryString = queryString+                  , Wai.requestBody = do                       bodyC <- readIORef bodyRef                       case bodyC of                         Just _body -> do@@ -87,12 +91,12 @@               ResponseBuilder _ _ builder -> do                  let p = fromLazy (toLazyByteString builder)-                writeIORef responseRef (Just (responseLine, headers, p))+                writeIORef responseRef (Just ((responseLine, headers), p))                 pure ResponseReceived               _ -> do                 pure ResponseReceived -      waiC - callback (httpVersion waiRequest)+      waiC - callback (Wai.httpVersion waiRequest)        maybeResponse <- readIORef responseRef 
src/Network/HTTP/Pony/Serve/Wai/Type.hs view
@@ -3,17 +3,11 @@  import Data.ByteString (ByteString) import Data.CaseInsensitive (CI)-import Network.Socket (Socket)-import Pipes (Producer)--type StartLine = ByteString-type Header = (CI ByteString, ByteString)+import qualified Network.HTTP.Pony.Transformer.HTTP.Type as HTTP -type Message a m r = (StartLine, [Header], Producer a m r)+type MessageType = (ByteString, [(CI ByteString, ByteString)]) -type Request a m r = Message a m r-type Response a m r = Message a m r+type Request = HTTP.Request MessageType ByteString IO ()+type Response = HTTP.Response MessageType ByteString IO () --- App shouldn't block!-type Application m a b c d = Request a m c -> m (Response b m d)-type App = Application IO ByteString ByteString () ()+type App = Request -> IO Response