blob: b7a913747a3973c4f19789ea4637b1639e836ea6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
package charakterin
import (
"database/sql"
"fmt"
"time"
"fagott.pw/goanilist"
)
// Ein User ist ein ganz toller Benutzer.
type User struct {
ID int
Name string
EMail string
Password []byte
DisplayName sql.NullString
LastActivity *time.Time
IsActive bool
Agent string
AnilistClient *goanilist.Client
externalServices []ExternalService
}
// GetName gibt den Anzeigenamen oder wenn dieser nicht gesetzt ist den Benutzernamen zurück.
func (u *User) GetName() string {
if u.DisplayName.Valid {
return u.DisplayName.String
}
return u.Name
}
func (u *User) HasExternalServices() bool {
return (u.AnilistClient != nil && u.AnilistClient.IsCoupled)
}
func (u *User) ExternalServices() []ExternalService {
if u.externalServices != nil {
return u.externalServices
}
ss := []ExternalService{}
if u.AnilistClient != nil {
s := ExternalService{
Name: "Anilist",
IsEnabled: u.AnilistClient.IsCoupled,
AuthType: "copy-paste",
AuthorizeURL: u.AnilistClient.AuthorizeURL(),
CoupleURL: "/settings/api/Anilist/couple",
}
if u.AnilistClient.IsCoupled {
user, err := u.AnilistClient.User()
if err != nil {
s.UserName = err.Error()
} else {
s.UserName = user.DisplayName
s.ProfileLink = fmt.Sprintf("https://anilist.co/user/%s", s.UserName)
}
}
ss = append(ss, s)
}
u.externalServices = ss
return ss
}
type ExternalService struct {
Name string
IsEnabled bool
AuthType string
AuthorizeURL string
CoupleURL string
UserName string
ProfileLink string
}
|