blob: 516f2a2f2c4022fbb0fa7fe7c7e5f109c93fb32a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
module Fig.Web.Module.ShindigsSorting
( public
, publicWebsockets
) where
import Fig.Prelude
import qualified Control.Concurrent.Chan as Chan
import qualified Data.Aeson as Aeson
import qualified Network.WebSockets as WS
import Fig.Web.Utils
import Fig.Web.Types
public :: PublicModule
public a = do
onPost "/api/shindigssort" do
b :: ShindigsSort <- bodyJSON
liftIO $ Chan.writeChan a.channels.shindigssort b
publicWebsockets :: PublicWebsockets
publicWebsockets a =
[ ( "/api/shindigssort/events", \conn -> do
c <- Chan.dupChan a.channels.shindigssort
forever do
ev <- liftIO $ Chan.readChan c
WS.sendTextData conn $ Aeson.encode ev
)
]
|