summaryrefslogtreecommitdiff
path: root/fig-web/src/Fig/Web/Module/ShindigsSorting.hs
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
    )
  ]