engine-io 1.0.2 → 1.1.0
raw patch · 3 files changed
+19/−16 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Network.EngineIO: srvSetContentType :: ServerAPI m -> ByteString -> m ()
- Network.EngineIO: srvSetResponseCode :: ServerAPI m -> Int -> m ()
- Network.EngineIO: srvWriteBuilder :: ServerAPI m -> Builder -> m ()
+ Network.EngineIO: srvTerminateWithResponse :: ServerAPI m -> Int -> ByteString -> Builder -> forall a. m a
- Network.EngineIO: ServerAPI :: m (HashMap ByteString [ByteString]) -> (Builder -> m ()) -> (ByteString -> m ()) -> (forall a. Parser a -> m a) -> m ByteString -> (ServerApp -> m ()) -> (Int -> m ()) -> ServerAPI m
+ Network.EngineIO: ServerAPI :: m (HashMap ByteString [ByteString]) -> (Int -> ByteString -> Builder -> forall a. m a) -> (forall a. Parser a -> m a) -> m ByteString -> (ServerApp -> m ()) -> ServerAPI m
Files
- Changelog.md +9/−0
- engine-io.cabal +1/−1
- src/Network/EngineIO.hs +9/−15
Changelog.md view
@@ -1,3 +1,12 @@+## 1.1.0++* The `ServerAPI` functions `srvWriteBuilder`, `srvSetContentType` and+ `srvSetResponseCode` have been merged into a single function:+ `srvTerminateWithResponse`. This should allow `ServerAPI` to be provided for+ Yesod.++ Thanks to Tim Baumann (@timjb) for this change.+ ## 1.0.2 * The `ping` thread spawned by `websockets` is now disabled, as it has been
engine-io.cabal view
@@ -1,5 +1,5 @@ name: engine-io-version: 1.0.2+version: 1.1.0 synopsis: A Haskell implementation of Engine.IO homepage: http://github.com/ocharles/engine.io license: BSD3
src/Network/EngineIO.hs view
@@ -324,11 +324,10 @@ -- ^ Retrieve the 'HashMap.HashMap' of query parameters in the request path -- to their zero-or-more values. - , srvWriteBuilder :: Builder.Builder -> m ()- -- ^ Write a 'Builder.Bulider' to the response.-- , srvSetContentType :: BS.ByteString -> m ()- -- ^ Set the @Content-Type@ header of the response.+ , srvTerminateWithResponse :: Int -> BS.ByteString -> Builder.Builder -> forall a . m a+ -- ^ Send a response with the given status code, content type and body. This+ -- should also terminate the web request entirely, such that further actions+ -- in @m@ have no effect. , srvParseRequestBody :: forall a. Attoparsec.Parser a -> m a -- ^ Run a 'Attoparsec.Parser' against the request body.@@ -340,8 +339,6 @@ , srvRunWebSocket :: WebSockets.ServerApp -> m () -- ^ Upgrade the current connection to run a WebSocket action. - , srvSetResponseCode :: Int -> m ()- -- ^ Set the response code of the response. } @@ -604,10 +601,9 @@ ---------------------------------------------------------------------------------writeBytes :: Monad m => ServerAPI m -> Builder.Builder -> m ()+writeBytes :: Monad m => ServerAPI m -> Builder.Builder -> m a writeBytes ServerAPI {..} builder = do- srvWriteBuilder builder- srvSetContentType "application/octet-stream"+ srvTerminateWithResponse 200 "application/octet-stream" builder {-# INLINE writeBytes #-} @@ -637,11 +633,9 @@ ---------------------------------------------------------------------------------serveError :: Monad m => ServerAPI m -> EngineIOError -> m ()-serveError ServerAPI{..} e = do- srvSetResponseCode 400- srvSetContentType "application/json"- srvWriteBuilder $ Builder.lazyByteString $ Aeson.encode $ Aeson.object+serveError :: Monad m => ServerAPI m -> EngineIOError -> m a+serveError ServerAPI{..} e = srvTerminateWithResponse 400 "application/json" $+ Builder.lazyByteString $ Aeson.encode $ Aeson.object [ "code" .= errorCode, "message" .= errorMessage ] where