A music player that connects to your cloud/distributed storage. diffuse.sh
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152module Playlists.Encoding exposing (decoder, encode, encodePlaylistTrack, playlistTrackDecoder)
import Json.Decode as Decodeimport Json.Decode.Ext as Decodeimport Json.Encode as Encodeimport Json.Encode.Ext exposing (..)import Playlists exposing (..)
-- ENCODE
encode : Playlist -> Encode.Valueencode playlist = Encode.object [ ( "autoGenerated", Encode.bool playlist.autoGenerated ) , ( "name", Encode.string playlist.name ) , ( "public", Encode.bool playlist.public ) , ( "tracks", Encode.list encodePlaylistTrack playlist.tracks ) ]
encodePlaylistTrack : PlaylistTrack -> Encode.ValueencodePlaylistTrack playlistTrack = Encode.object [ ( "album", encodeMaybe playlistTrack.album Encode.string ) , ( "artist", encodeMaybe playlistTrack.artist Encode.string ) , ( "title", Encode.string playlistTrack.title ) ]
-- DECODE
decoder : Decode.Decoder Playlistdecoder = Decode.map4 Playlist (Decode.field "autoGenerated" Decode.bool) (Decode.field "name" Decode.string) (Decode.optionalField "public" Decode.bool False) (Decode.field "tracks" <| Decode.list playlistTrackDecoder)
playlistTrackDecoder : Decode.Decoder PlaylistTrackplaylistTrackDecoder = Decode.map3 PlaylistTrack (Decode.maybe <| Decode.field "album" Decode.string) (Decode.maybe <| Decode.field "artist" Decode.string) (Decode.field "title" Decode.string)