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()
BissleArbeit()
LangeArbeit()
go Arbeiten()

View File

@@ -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
}

View File

@@ -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 <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{
Description: msgs,
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)
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)

View File

@@ -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)
}