From 3771b1d2c48558a287507e611705c26597cef4e4 Mon Sep 17 00:00:00 2001 From: daru Date: Wed, 20 Jul 2022 23:47:31 +0200 Subject: [PATCH] Embrace the pointer --- huso.go | 1 + knecht.go | 66 ++++++++++++++++++++++++++++----------------------- labersack.go | 4 ++-- ober.go | 6 ++--- praktikant.go | 19 ++++++++++----- 5 files changed, 55 insertions(+), 41 deletions(-) diff --git a/huso.go b/huso.go index badc7d7..14e178d 100644 --- a/huso.go +++ b/huso.go @@ -163,6 +163,7 @@ func main() { } Arbeit() + BissleArbeit() LangeArbeit() go Arbeiten() diff --git a/knecht.go b/knecht.go index fcc642b..01a755a 100644 --- a/knecht.go +++ b/knecht.go @@ -87,51 +87,57 @@ func GetUserAnimeListData(username, status string) (*AnimeListMal, []byte, error return &list, data, err } -func GetUserData(username string) (*User, []byte, error) { +func GetUser(username string) (*User, []byte, error) { var user User data, err := userCache.Get(username) if err != nil { err = nil - dataJikan, err := GetDataJikan(userApiJikan + username) + userp, data, err := GetUserData(username) + if err != nil { + return userp, data, err + } + userCache.Set(username, data) + return userp, data, err + } else { + err = json.Unmarshal(data, &user) + } + + return &user, data, err +} + +func GetUserData(username string) (*User, []byte, error) { + dataJikan, err := GetDataJikan(userApiJikan + username) + if err != nil { + return nil, nil, err + } + if strings.Contains(string(dataJikan), "BadResponseException") { + return nil, nil, fmt.Errorf("user not found: %s", username) + } + var userJikan UserJikan + err = json.Unmarshal(dataJikan, &userJikan) + if err != nil { + return nil, nil, err + } + // workaround number #2 bcs jikan kekw + if userJikan.Data.MalID == 0 { + dataJikan, err = GetDataJikan(userApiJikan + username) if err != nil { return nil, nil, err } if strings.Contains(string(dataJikan), "BadResponseException") { return nil, nil, fmt.Errorf("user not found: %s", username) } - var userJikan UserJikan err = json.Unmarshal(dataJikan, &userJikan) if err != nil { return nil, nil, err } - // workaround number #2 bcs jikan kekw - if userJikan.Data.MalID == 0 { - dataJikan, err = GetDataJikan(userApiJikan + username) - if err != nil { - return nil, nil, err - } - if strings.Contains(string(dataJikan), "BadResponseException") { - return nil, nil, fmt.Errorf("user not found: %s", username) - } - err = json.Unmarshal(dataJikan, &userJikan) - if err != nil { - return nil, nil, err - } - } - if userJikan.Data.MalID == 0 { - return nil, nil, fmt.Errorf("user returned empty object: %s", username) - } - // convert to user - user = UserConvert(&userJikan) - data, err = json.Marshal(&user) - if err != nil { - return &user, data, err - } - userCache.Set(username, data) - } else { - err = json.Unmarshal(data, &user) } - + if userJikan.Data.MalID == 0 { + return nil, nil, fmt.Errorf("user returned empty object: %s", username) + } + // convert to user + user := UserConvert(&userJikan) + data, err := json.Marshal(&user) return &user, data, err } diff --git a/labersack.go b/labersack.go index d90b45a..6a08a5f 100644 --- a/labersack.go +++ b/labersack.go @@ -41,7 +41,7 @@ func SendAppointBroadcast(creator string, app *Appointment) { }, } - user, _, err := GetUserData(creator) + user, _, err := GetUser(creator) if err == nil { msge.Author = &discordgo.MessageEmbedAuthor{ Name: user.Username, @@ -84,7 +84,7 @@ func AnnounceAppointmentSoon(app *Appointment) { msgStart.WriteString(fmt.Sprintf("<@%d>", uData.DiscordID)) } - msgs := fmt.Sprintf("⏰ Appointment starting in !\n[%s](https://anime.hanami.family/anime/%d) at\n", app.Time.Unix(), anime.Title, app.Anime, app.Time.Unix()) + msgs := fmt.Sprintf("⏰ Appointment starting !\n[%s](https://anime.hanami.family/anime/%d) at\n", app.Time.Unix(), anime.Title, app.Anime, app.Time.Unix()) msge := discordgo.MessageEmbed{ Description: msgs, URL: fmt.Sprintf("https://anime.hanami.family/anime/%d", app.Anime), diff --git a/ober.go b/ober.go index 9ea9f6c..fa0462d 100644 --- a/ober.go +++ b/ober.go @@ -285,7 +285,7 @@ func UserGet(ctx *fasthttp.RequestCtx) { users := make([]User, 0) if usrVal != nil { // get specific user - user, _, err := GetUserData(fmt.Sprintf("%s", usrVal)) + user, _, err := GetUser(fmt.Sprintf("%s", usrVal)) if err != nil { ctx.WriteString(err.Error()) ctx.SetStatusCode(fasthttp.StatusNotFound) @@ -303,7 +303,7 @@ func UserGet(ctx *fasthttp.RequestCtx) { regUsers = make([]UserData, 0) } for _, u := range regUsers { - user, _, err := GetUserData(u.Username) + user, _, err := GetUser(u.Username) if err != nil { addErrorToCtx(ctx, err) return @@ -424,7 +424,7 @@ func Register(ctx *fasthttp.RequestCtx) { return } // check user legit - userData, _, err := GetUserData(register.Username) + userData, _, err := GetUser(register.Username) if err != nil { ctx.WriteString(err.Error()) ctx.SetStatusCode(fasthttp.StatusExpectationFailed) diff --git a/praktikant.go b/praktikant.go index cdbd163..8186c47 100644 --- a/praktikant.go +++ b/praktikant.go @@ -133,7 +133,7 @@ func BissleArbeit() { } } else { for _, u := range regUsers { - _, _, err = GetUserData(u.Username) + err = refreshUser(u.Username) if err != nil { color.Errorln(err.Error()) logOut.WriteError(err) @@ -237,14 +237,21 @@ func refreshAnime(animeId int64) error { if err != nil { return err } - animeCache.Set(key, data) - return nil + return animeCache.Set(key, data) } func refreshSeason(season string) error { _, bytes, err := GetSeasonDataAll(season) - if err == nil { - err = seasoncache.Set(season, bytes) + if err != nil { + return err } - return err + return seasoncache.Set(season, bytes) +} + +func refreshUser(username string) error { + _, data, err := GetUserData(username) + if err != nil { + return err + } + return userCache.Set(username, data) }