packages feed

websockets 0.4.0.1 → 0.4.1.0

raw patch · 10 files changed

+30/−74 lines, 10 files

Files

src/Network/WebSockets.hs view
@@ -96,7 +96,6 @@     , I.BinaryProtocol     , I.Hybi00     , I.Hybi10-    , I.Hybi17        -- * A simple standalone server     , I.runServer@@ -161,7 +160,6 @@ import qualified Network.WebSockets.Protocol as I import qualified Network.WebSockets.Protocol.Hybi00 as I import qualified Network.WebSockets.Protocol.Hybi10 as I-import qualified Network.WebSockets.Protocol.Hybi17 as I import qualified Network.WebSockets.Protocol.Unsafe as Unsafe import qualified Network.WebSockets.Socket as I import qualified Network.WebSockets.Types as I
src/Network/WebSockets/Handshake.hs view
@@ -47,4 +47,4 @@     _            -> []   where     versionHeader = [("Sec-WebSocket-Version",-        B.intercalate ", " $ map headerVersion (implementations :: [p]))]+        B.intercalate ", " $ concatMap headerVersions (implementations :: [p]))]
src/Network/WebSockets/Protocol.hs view
@@ -19,22 +19,23 @@  class Protocol p where     -- | Unique identifier for us.-    version       :: p -> String+    version         :: p -> String -    -- | Version as used in the "Sec-WebSocket-Version " header. This is usually-    -- not the same, or derivable from "version", e.g. for hybi10, it's "8".-    headerVersion :: p -> B.ByteString+    -- | Version accepted in the "Sec-WebSocket-Version " header. This is+    -- usually not the same, or derivable from "version", e.g. for hybi10, it's+    -- "7", "8" or "17".+    headerVersions  :: p -> [B.ByteString] -    encodeFrame   :: p -> Encoder p Frame-    decodeFrame   :: p -> Decoder p Frame+    encodeFrame     :: p -> Encoder p Frame+    decodeFrame     :: p -> Decoder p Frame      -- | Parse and validate the rest of the request. For hybi10, this is just     -- validation, but hybi00 also needs to fetch a "security token"     --     -- Todo: Maybe we should introduce our own simplified error type here. (to     -- be amended with the RequestHttpPart for the user)-    finishRequest :: p -> RequestHttpPart-                  -> Decoder p (Either HandshakeError Request)+    finishRequest   :: p -> RequestHttpPart+                    -> Decoder p (Either HandshakeError Request)      -- | Implementations of the specification     implementations :: [p]
src/Network/WebSockets/Protocol/Hybi00.hs view
@@ -7,16 +7,15 @@ import Network.WebSockets.Protocol import Network.WebSockets.Protocol.Hybi00.Internal import Network.WebSockets.Protocol.Hybi10.Internal-import Network.WebSockets.Protocol.Hybi17.Internal  data Hybi00 = forall p. Protocol p => Hybi00 p  instance Protocol Hybi00 where-    version       (Hybi00 p) = version p-    headerVersion (Hybi00 p) = headerVersion p-    encodeFrame   (Hybi00 p) = encodeFrame p-    decodeFrame   (Hybi00 p) = decodeFrame p-    finishRequest (Hybi00 p) = finishRequest p-    implementations          = [Hybi00 Hybi17_, Hybi00 Hybi10_, Hybi00 Hybi00_]+    version        (Hybi00 p) = version p+    headerVersions (Hybi00 p) = headerVersions p+    encodeFrame    (Hybi00 p) = encodeFrame p+    decodeFrame    (Hybi00 p) = decodeFrame p+    finishRequest  (Hybi00 p) = finishRequest p+    implementations           = [Hybi00 Hybi10_, Hybi00 Hybi00_]  instance TextProtocol Hybi00
src/Network/WebSockets/Protocol/Hybi00/Internal.hs view
@@ -30,7 +30,7 @@  instance Protocol Hybi00_ where     version         Hybi00_ = "hybi00"-    headerVersion   Hybi00_ = "0"  -- but the client will elide it+    headerVersions  Hybi00_ = ["0"]  -- but the client will elide it     encodeFrame     Hybi00_ = encodeFrameHybi00     decodeFrame     Hybi00_ = decodeFrameHybi00     finishRequest   Hybi00_ = runErrorT . handshakeHybi00
src/Network/WebSockets/Protocol/Hybi10.hs view
@@ -5,17 +5,16 @@  import Network.WebSockets.Protocol import Network.WebSockets.Protocol.Hybi10.Internal-import Network.WebSockets.Protocol.Hybi17.Internal  data Hybi10 = forall p. Protocol p => Hybi10 p  instance Protocol Hybi10 where-    version       (Hybi10 p) = version p-    headerVersion (Hybi10 p) = headerVersion p-    encodeFrame   (Hybi10 p) = encodeFrame p-    decodeFrame   (Hybi10 p) = decodeFrame p-    finishRequest (Hybi10 p) = finishRequest p-    implementations          = [Hybi10 Hybi17_, Hybi10 Hybi10_]+    version        (Hybi10 p) = version p+    headerVersions (Hybi10 p) = headerVersions p+    encodeFrame    (Hybi10 p) = encodeFrame p+    decodeFrame    (Hybi10 p) = decodeFrame p+    finishRequest  (Hybi10 p) = finishRequest p+    implementations           = [Hybi10 Hybi10_]  instance TextProtocol Hybi10 instance BinaryProtocol Hybi10
src/Network/WebSockets/Protocol/Hybi10/Internal.hs view
@@ -31,7 +31,7 @@  instance Protocol Hybi10_ where     version         Hybi10_ = "hybi10"-    headerVersion   Hybi10_ = "8"+    headerVersions  Hybi10_ = ["13", "8", "7"]     encodeFrame     Hybi10_ = encodeFrameHybi10     decodeFrame     Hybi10_ = decodeFrameHybi10     finishRequest   Hybi10_ = handshakeHybi10@@ -115,8 +115,10 @@ handshakeHybi10 :: RequestHttpPart -> Decoder p (Either HandshakeError Request) handshakeHybi10 reqHttp@(RequestHttpPart path h) = return $ do     case getHeader "Sec-WebSocket-Version" of-        Right "8" -> return ()-        _         -> throwError NotSupported+        Right "7"  -> return ()+        Right "8"  -> return ()+        Right "13" -> return ()+        _          -> throwError NotSupported     key <- getHeader "Sec-WebSocket-Key"     let hash = unlazy $ bytestringDigest $ sha1 $ lazy $ key `mappend` guid     let encoded = B64.encode hash
− src/Network/WebSockets/Protocol/Hybi17.hs
@@ -1,21 +0,0 @@-{-# LANGUAGE ExistentialQuantification #-}-module Network.WebSockets.Protocol.Hybi17-    ( Hybi17-    ) where--import Network.WebSockets.Protocol-import Network.WebSockets.Protocol.Hybi10.Internal-import Network.WebSockets.Protocol.Hybi17.Internal--data Hybi17 = forall p. Protocol p => Hybi17 p--instance Protocol Hybi17 where-    version       (Hybi17 p) = version p-    headerVersion (Hybi17 p) = headerVersion p-    encodeFrame   (Hybi17 p) = encodeFrame p-    decodeFrame   (Hybi17 p) = decodeFrame p-    finishRequest (Hybi17 p) = finishRequest p-    implementations          = [Hybi17 Hybi17_, Hybi17 Hybi10_]--instance TextProtocol Hybi17-instance BinaryProtocol Hybi17
− src/Network/WebSockets/Protocol/Hybi17/Internal.hs
@@ -1,20 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}-module Network.WebSockets.Protocol.Hybi17.Internal-    ( Hybi17_ (..)-    ) where--import Network.WebSockets.Protocol-import Network.WebSockets.Protocol.Hybi10.Internal--data Hybi17_ = Hybi17_--instance Protocol Hybi17_ where-    version         Hybi17_ = "hybi17"-    headerVersion   Hybi17_ = "13"-    encodeFrame     Hybi17_ = encodeFrame   Hybi10_-    decodeFrame     Hybi17_ = decodeFrame   Hybi10_-    finishRequest   Hybi17_ = finishRequest Hybi10_-    implementations         = [Hybi17_]--instance TextProtocol Hybi17_-instance BinaryProtocol Hybi17_
websockets.cabal view
@@ -1,5 +1,5 @@ Name:    websockets-Version: 0.4.0.1+Version: 0.4.1.0  Synopsis:   A sensible and clean way to write WebSocket-capable servers in Haskell.@@ -34,7 +34,7 @@ Stability:     experimental Category:      Network Build-type:    Simple-Cabal-version: >= 1.6+Cabal-version: >= 1.8  Homepage:    http://jaspervdj.be/websockets Bug-reports: https://github.com/jaspervdj/websockets/issues@@ -58,8 +58,6 @@     Network.WebSockets.Protocol.Hybi00.Internal     Network.WebSockets.Protocol.Hybi10     Network.WebSockets.Protocol.Hybi10.Internal-    Network.WebSockets.Protocol.Hybi17-    Network.WebSockets.Protocol.Hybi17.Internal     Network.WebSockets.Protocol.Unsafe     Network.WebSockets.Socket     Network.WebSockets.Types