diff options
Diffstat (limited to 'user.go')
-rw-r--r-- | user.go | 45 |
1 files changed, 45 insertions, 0 deletions
@@ -3,6 +3,8 @@ package charakterin | |||
3 | import ( | 3 | import ( |
4 | "database/sql" | 4 | "database/sql" |
5 | "time" | 5 | "time" |
6 | |||
7 | "fagott.pw/goanilist" | ||
6 | ) | 8 | ) |
7 | 9 | ||
8 | // Ein User ist ein ganz toller Benutzer. | 10 | // Ein User ist ein ganz toller Benutzer. |
@@ -15,6 +17,9 @@ type User struct { | |||
15 | LastActivity *time.Time | 17 | LastActivity *time.Time |
16 | IsActive bool | 18 | IsActive bool |
17 | Agent string | 19 | Agent string |
20 | |||
21 | AnilistClient *goanilist.Client | ||
22 | externalServices []ExternalService | ||
18 | } | 23 | } |
19 | 24 | ||
20 | // GetName gibt den Anzeigenamen oder wenn dieser nicht gesetzt ist den Benutzernamen zurück. | 25 | // GetName gibt den Anzeigenamen oder wenn dieser nicht gesetzt ist den Benutzernamen zurück. |
@@ -24,3 +29,43 @@ func (u *User) GetName() string { | |||
24 | } | 29 | } |
25 | return u.Name | 30 | return u.Name |
26 | } | 31 | } |
32 | |||
33 | func (u *User) HasExternalServices() bool { | ||
34 | return u.AnilistClient.IsCoupled | ||
35 | } | ||
36 | |||
37 | func (u *User) ExternalServices() []ExternalService { | ||
38 | if u.externalServices != nil { | ||
39 | return u.externalServices | ||
40 | } | ||
41 | ss := []ExternalService{} | ||
42 | if u.AnilistClient != nil { | ||
43 | s := ExternalService{ | ||
44 | Name: "Anilist", | ||
45 | IsEnabled: u.AnilistClient.IsCoupled, | ||
46 | AuthType: "copy-paste", | ||
47 | AuthorizeURL: u.AnilistClient.AuthorizeURL(), | ||
48 | CoupleURL: "/settings/api/Anilist/couple", | ||
49 | } | ||
50 | if u.AnilistClient.IsCoupled { | ||
51 | user, err := u.AnilistClient.User() | ||
52 | if err != nil { | ||
53 | s.UserName = err.Error() | ||
54 | } else { | ||
55 | s.UserName = user.DisplayName | ||
56 | } | ||
57 | } | ||
58 | ss = append(ss, s) | ||
59 | } | ||
60 | u.externalServices = ss | ||
61 | return ss | ||
62 | } | ||
63 | |||
64 | type ExternalService struct { | ||
65 | Name string | ||
66 | IsEnabled bool | ||
67 | AuthType string | ||
68 | AuthorizeURL string | ||
69 | CoupleURL string | ||
70 | UserName string | ||
71 | } | ||