@@ -20,8 +20,10 @@ import Web.SocketIO.Types.String
20
20
import Control.Applicative
21
21
import Data.Aeson
22
22
import Data.Aeson.Encode (encodeToTextBuilder )
23
+ import Data.List (intersperse )
23
24
import Data.Text.Internal.Builder (toLazyText )
24
- import Data.Vector (toList )
25
+ import qualified Data.Text.Lazy as TL
26
+ import Data.Vector (toList )
25
27
--------------------------------------------------------------------------------
26
28
-- | Name of an Event
27
29
type EventName = Text
@@ -30,14 +32,19 @@ type EventName = Text
30
32
-- | Payload carried by an Event
31
33
data Payload = Payload [Text ] deriving (Eq , Show )
32
34
35
+ instance Serializable Payload where
36
+ serialize (Payload payload) = serialize $ ' [' `TL.cons` (TL. concat $ intersperse " ," payload) `TL.snoc` ' ]'
37
+
33
38
--------------------------------------------------------------------------------
34
39
-- | Event
35
40
data Event = Event EventName Payload
36
41
| NoEvent -- ^ some malformed shit
37
42
deriving (Show , Eq )
38
43
39
44
instance Serializable Event where
40
- serialize = serialize . encode
45
+ serialize (Event name (Payload [] )) = serialize $ " {\" name\" :\" " `TL.append` name `TL.append` " \" }"
46
+ serialize (Event name payload) = serialize $ " {\" name\" :\" " `TL.append` name `TL.append` " \" ,\" args\" :" `TL.append` serialize payload `TL.append` " }"
47
+ serialize NoEvent = " "
41
48
42
49
instance FromJSON Event where
43
50
parseJSON (Object v) = Event <$>
@@ -51,8 +58,8 @@ instance FromJSON Event where
51
58
parseJSON _ = return NoEvent
52
59
53
60
instance ToJSON Event where
54
- toJSON (Event name (Payload [] )) = object [" name" .= name]
55
- toJSON (Event name (Payload args )) = object [" name" .= name, " args" .= args ]
61
+ toJSON (Event name (Payload [] )) = object [" name" .= name]
62
+ toJSON (Event name (Payload payload )) = object [" name" .= name, " args" .= payload ]
56
63
toJSON NoEvent = object []
57
64
58
65
--------------------------------------------------------------------------------
0 commit comments