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

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