Embrace the pointer

This commit is contained in:
daru
2022-07-20 23:47:31 +02:00
parent d54ed135e3
commit 3771b1d2c4
5 changed files with 55 additions and 41 deletions

View File

@@ -163,6 +163,7 @@ func main() {
} }
Arbeit() Arbeit()
BissleArbeit()
LangeArbeit() LangeArbeit()
go Arbeiten() go Arbeiten()

View File

@@ -87,51 +87,57 @@ func GetUserAnimeListData(username, status string) (*AnimeListMal, []byte, error
return &list, data, err return &list, data, err
} }
func GetUserData(username string) (*User, []byte, error) { func GetUser(username string) (*User, []byte, error) {
var user User var user User
data, err := userCache.Get(username) data, err := userCache.Get(username)
if err != nil { if err != nil {
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 { if err != nil {
return nil, nil, err return nil, nil, err
} }
if strings.Contains(string(dataJikan), "BadResponseException") { if strings.Contains(string(dataJikan), "BadResponseException") {
return nil, nil, fmt.Errorf("user not found: %s", username) return nil, nil, fmt.Errorf("user not found: %s", username)
} }
var userJikan UserJikan
err = json.Unmarshal(dataJikan, &userJikan) err = json.Unmarshal(dataJikan, &userJikan)
if err != nil { if err != nil {
return nil, nil, err 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 return &user, data, err
} }

View File

@@ -41,7 +41,7 @@ func SendAppointBroadcast(creator string, app *Appointment) {
}, },
} }
user, _, err := GetUserData(creator) user, _, err := GetUser(creator)
if err == nil { if err == nil {
msge.Author = &discordgo.MessageEmbedAuthor{ msge.Author = &discordgo.MessageEmbedAuthor{
Name: user.Username, Name: user.Username,
@@ -84,7 +84,7 @@ func AnnounceAppointmentSoon(app *Appointment) {
msgStart.WriteString(fmt.Sprintf("<@%d>", uData.DiscordID)) msgStart.WriteString(fmt.Sprintf("<@%d>", uData.DiscordID))
} }
msgs := fmt.Sprintf("⏰ Appointment starting in <t:%d:R>!\n[%s](https://anime.hanami.family/anime/%d) at\n<t:%d:F>", app.Time.Unix(), anime.Title, app.Anime, app.Time.Unix()) msgs := fmt.Sprintf("⏰ Appointment starting <t:%d:R>!\n[%s](https://anime.hanami.family/anime/%d) at\n<t:%d:F>", app.Time.Unix(), anime.Title, app.Anime, app.Time.Unix())
msge := discordgo.MessageEmbed{ msge := discordgo.MessageEmbed{
Description: msgs, Description: msgs,
URL: fmt.Sprintf("https://anime.hanami.family/anime/%d", app.Anime), URL: fmt.Sprintf("https://anime.hanami.family/anime/%d", app.Anime),

View File

@@ -285,7 +285,7 @@ func UserGet(ctx *fasthttp.RequestCtx) {
users := make([]User, 0) users := make([]User, 0)
if usrVal != nil { if usrVal != nil {
// get specific user // get specific user
user, _, err := GetUserData(fmt.Sprintf("%s", usrVal)) user, _, err := GetUser(fmt.Sprintf("%s", usrVal))
if err != nil { if err != nil {
ctx.WriteString(err.Error()) ctx.WriteString(err.Error())
ctx.SetStatusCode(fasthttp.StatusNotFound) ctx.SetStatusCode(fasthttp.StatusNotFound)
@@ -303,7 +303,7 @@ func UserGet(ctx *fasthttp.RequestCtx) {
regUsers = make([]UserData, 0) regUsers = make([]UserData, 0)
} }
for _, u := range regUsers { for _, u := range regUsers {
user, _, err := GetUserData(u.Username) user, _, err := GetUser(u.Username)
if err != nil { if err != nil {
addErrorToCtx(ctx, err) addErrorToCtx(ctx, err)
return return
@@ -424,7 +424,7 @@ func Register(ctx *fasthttp.RequestCtx) {
return return
} }
// check user legit // check user legit
userData, _, err := GetUserData(register.Username) userData, _, err := GetUser(register.Username)
if err != nil { if err != nil {
ctx.WriteString(err.Error()) ctx.WriteString(err.Error())
ctx.SetStatusCode(fasthttp.StatusExpectationFailed) ctx.SetStatusCode(fasthttp.StatusExpectationFailed)

View File

@@ -133,7 +133,7 @@ func BissleArbeit() {
} }
} else { } else {
for _, u := range regUsers { for _, u := range regUsers {
_, _, err = GetUserData(u.Username) err = refreshUser(u.Username)
if err != nil { if err != nil {
color.Errorln(err.Error()) color.Errorln(err.Error())
logOut.WriteError(err) logOut.WriteError(err)
@@ -237,14 +237,21 @@ func refreshAnime(animeId int64) error {
if err != nil { if err != nil {
return err return err
} }
animeCache.Set(key, data) return animeCache.Set(key, data)
return nil
} }
func refreshSeason(season string) error { func refreshSeason(season string) error {
_, bytes, err := GetSeasonDataAll(season) _, bytes, err := GetSeasonDataAll(season)
if err == nil { if err != nil {
err = seasoncache.Set(season, bytes) 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)
} }