]> git.lizzy.rs Git - go-anidb.git/blobdiff - mylistanime.go
Modernize
[go-anidb.git] / mylistanime.go
index 3dc407b2e33d1501c39279a2ed58ab5dff200c77..5ceb608911eaba29e0c985341b38a65f654b0e3f 100644 (file)
@@ -2,7 +2,7 @@ package anidb
 
 import (
        "encoding/json"
-       "github.com/Kovensky/go-anidb/misc"
+       "github.com/EliasFleckenstein03/go-anidb/misc"
        "strconv"
        "time"
 )
@@ -10,10 +10,7 @@ import (
 type MyListAnime struct {
        AID AID
 
-       UnknownState misc.EpisodeList
-       OnHDD        misc.EpisodeList
-       OnCD         misc.EpisodeList
-       Deleted      misc.EpisodeList
+       EpisodesWithState MyListStateMap
 
        WatchedEpisodes misc.EpisodeList
 
@@ -48,3 +45,30 @@ func (ge GroupEpisodes) UnmarshalJSON(b []byte) error {
 
        return nil
 }
+
+type MyListStateMap map[MyListState]misc.EpisodeList
+
+func (sm MyListStateMap) MarshalJSON() ([]byte, error) {
+       generic := make(map[string]misc.EpisodeList, len(sm))
+       for k, v := range sm {
+               generic[strconv.Itoa(int(k))] = v
+       }
+       return json.Marshal(generic)
+}
+
+func (sm MyListStateMap) UnmarshalJSON(b []byte) error {
+       var generic map[string]misc.EpisodeList
+       if err := json.Unmarshal(b, &generic); err != nil {
+               return err
+       }
+       for k, v := range generic {
+               ik, err := strconv.ParseInt(k, 10, 32)
+               if err != nil {
+                       return err
+               }
+
+               sm[MyListState(ik)] = v
+       }
+
+       return nil
+}