package charakterin import ( "database/sql" "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.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 } } ss = append(ss, s) } u.externalServices = ss return ss } type ExternalService struct { Name string IsEnabled bool AuthType string AuthorizeURL string CoupleURL string UserName string }