diff options
| author | rtz12 <koenig@fagott.pw> | 2016-11-13 02:46:22 (UTC) |
|---|---|---|
| committer | rtz12 <koenig@fagott.pw> | 2016-11-13 02:46:22 (UTC) |
| commit | 1e92d1fd37d2fa2dd99e68082e224b8ed7d634fb (patch) | |
| tree | 0fe88b192cab768247830fe4413cec5740a81d71 /user.go | |
| parent | 71e3b22bcc79168f0bed6e2f6b7d3e34a3b641d4 (diff) | |
Userspezifische Anilist-API und Koppelung implementiert
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 | } | ||
