http-pony 0.1.0.2 → 0.1.0.3
raw patch · 3 files changed
+23/−19 lines, 3 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
+ Network.HTTP.Pony.Serve: serve :: (MonadSafe m) => HostPreference -> ServiceName -> (Producer ByteString (SafeT IO) () -> (SafeT IO) (Producer ByteString (SafeT IO) ())) -> m ()
- Network.HTTP.Pony.Serve: run :: (MonadSafe m) => HostPreference -> ServiceName -> (Producer ByteString IO () -> IO (Producer ByteString IO ())) -> m ()
+ Network.HTTP.Pony.Serve: run :: (MonadSafe m) => HostPreference -> ServiceName -> (Producer ByteString (SafeT IO) () -> (SafeT IO) (Producer ByteString (SafeT IO) ())) -> m ()
Files
- ChangeLog.md +5/−1
- http-pony.cabal +1/−3
- src/Network/HTTP/Pony/Serve.hs +17/−15
ChangeLog.md view
@@ -1,5 +1,9 @@ # Revision history for http-pony -## 0.1.0.0 -- YYYY-mm-dd+## 0.1.0.0 -- 2016-09-22 * First version. Released on an unsuspecting world.++## 0.1.0.3 -- 2016-09-24++* Add MonadSafe type for m, this enables resource safe request / repsonse pipes.
http-pony.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/ name: http-pony-version: 0.1.0.2+version: 0.1.0.3 synopsis: A type unsafe http library -- description: license: BSD3@@ -21,7 +21,6 @@ exposed-modules: Network.HTTP.Pony.Type , Network.HTTP.Pony.Serve , Network.HTTP.Pony.Helper- -- , Network.HTTP.Pony.Transformer -- other-modules: -- other-extensions: OverloadedStrings build-depends: @@ -32,7 +31,6 @@ , pipes >=4.1 , pipes-network >=0.6 , pipes-safe >=2.2- -- , profunctors >= 5.2 , transformers >=0.5
src/Network/HTTP/Pony/Serve.hs view
@@ -7,11 +7,12 @@ import Control.Monad.IO.Class (MonadIO(..)) import Data.ByteString.Char8 (ByteString) import qualified Network.Socket as NS-import Pipes (Producer, Consumer, runEffect, (>->))+import Pipes (Effect, Producer, Consumer, runEffect, (>->)) import Pipes.Network.TCP.Safe (HostPreference())-import Pipes.Network.TCP.Safe (fromSocket, toSocket)+import Pipes.Network.TCP.Safe (fromSocket, toSocket, connect, connectSock+ , closeSock) import qualified Pipes.Network.TCP.Safe as PipesNetwork-import Pipes.Safe (MonadSafe(), runSafeT)+import Pipes.Safe (MonadSafe(), runSafeT, SafeT) import Network.HTTP.Pony.Helper ((-), shutdownSend, shutdownReceive) import Prelude hiding ((-), log)@@ -27,8 +28,8 @@ pure () serveWithSocket :: (MonadIO m) => (NS.Socket, NS.SockAddr)- -> (Producer ByteString m () -> m (Producer ByteString m ()))- -> m ()+ -> (Producer ByteString m () -> m (Producer ByteString m ()))+ -> m () serveWithSocket (s,_) = let pull = fromSocket s 4096 >> shutdownReceive s@@ -37,18 +38,19 @@ serveWithPipe pull push +serve :: (MonadSafe m) => HostPreference+ -> NS.ServiceName+ -> (Producer ByteString (SafeT IO) ()+ -> (SafeT IO) (Producer ByteString (SafeT IO) ()))+ -> m () +serve host service app =+ PipesNetwork.serve host service - \socket -> runSafeT (serveWithSocket socket app)+ run :: (MonadSafe m) => HostPreference -> NS.ServiceName- -> (Producer ByteString IO () -> IO (Producer ByteString IO ()))+ -> (Producer ByteString (SafeT IO) ()+ -> (SafeT IO) (Producer ByteString (SafeT IO) ())) -> m ()-run host service app =- PipesNetwork.serve host service - \socket -> do- serveWithSocket socket app-- -- pure ()+run = serve - -- r <- serveWithSocket socket app- -- case r of- -- Nothing -> pure ()- -- Just err -> pure () -- log - view packed - show err