]> git.lizzy.rs Git - go-anidb.git/blob - mylistanime.go
anidb: Support querying for mylist of an Anime
[go-anidb.git] / mylistanime.go
1 package anidb
2
3 import (
4         "encoding/json"
5         "github.com/Kovensky/go-anidb/misc"
6         "strconv"
7         "time"
8 )
9
10 type MyListAnime struct {
11         AID AID
12
13         UnknownState misc.EpisodeList
14         OnHDD        misc.EpisodeList
15         OnCD         misc.EpisodeList
16         Deleted      misc.EpisodeList
17
18         WatchedEpisodes misc.EpisodeList
19
20         EpisodesPerGroup GroupEpisodes
21
22         Cached time.Time
23 }
24
25 type GroupEpisodes map[GID]misc.EpisodeList
26
27 func (ge GroupEpisodes) MarshalJSON() ([]byte, error) {
28         generic := make(map[string]misc.EpisodeList, len(ge))
29         for k, v := range ge {
30                 generic[strconv.Itoa(int(k))] = v
31         }
32         return json.Marshal(generic)
33 }
34
35 func (ge GroupEpisodes) UnmarshalJSON(b []byte) error {
36         var generic map[string]misc.EpisodeList
37         if err := json.Unmarshal(b, &generic); err != nil {
38                 return err
39         }
40         for k, v := range generic {
41                 ik, err := strconv.ParseInt(k, 10, 32)
42                 if err != nil {
43                         return err
44                 }
45
46                 ge[GID(ik)] = v
47         }
48
49         return nil
50 }