Encode ws messages as JSON

This commit is contained in:
eikek
2021-11-11 21:55:31 +01:00
parent d0f3d54060
commit cf933b60a7
10 changed files with 99 additions and 46 deletions

View File

@ -5,18 +5,37 @@
-}
module Data.ServerEvent exposing (ServerEvent(..), fromString)
module Data.ServerEvent exposing (ServerEvent(..), decode)
import Json.Decode as D
type ServerEvent
= ItemProcessed
| JobsWaiting Int
fromString : String -> Maybe ServerEvent
fromString str =
case String.toLower str of
decoder : D.Decoder ServerEvent
decoder =
D.field "tag" D.string
|> D.andThen decodeTag
decode : D.Value -> Result String ServerEvent
decode json =
D.decodeValue decoder json
|> Result.mapError D.errorToString
decodeTag : String -> D.Decoder ServerEvent
decodeTag tag =
case tag of
"item-processed" ->
Just ItemProcessed
D.succeed ItemProcessed
"jobs-waiting" ->
D.field "content" D.int
|> D.map JobsWaiting
_ ->
Nothing
D.fail ("Unknown tag: " ++ tag)