Users + Nuts + Sauce

This commit is contained in:
daru
2022-04-14 00:33:38 +02:00
parent 1bf126afa4
commit cf70db1f96
9 changed files with 190 additions and 32 deletions

View File

@@ -11,9 +11,47 @@ import (
"github.com/valyala/fasthttp"
)
func GetUserAnimeListData(username, status string) (*AnimeListMal, []byte, error) {
var list AnimeListMal
body, err := GetUserAnimeListBytes(username, status)
if err != nil {
return nil, body, err
}
err = json.Unmarshal(body, &list)
return &list, body, err
}
func GetUserAnimeListBytes(username, status string) ([]byte, error) {
return GetDataMal(userApiMal + username + "/animelist?limit=1000&status=" + status)
}
func GetUserData(username string) (*UserJikan, []byte, error) {
var user UserJikan
body, err := GetUserBytesCached(username)
if err != nil {
return nil, body, err
}
err = json.Unmarshal(body, &user)
return &user, body, err
}
func GetUserBytesCached(username string) ([]byte, error) {
key := userApiJikan + username
data, err := cache.Get(key)
if err != nil {
data, err = GetDataJikan(key)
if err != nil {
return data, err
}
cache.Set(key, data)
return data, err
}
return data, err
}
func GetSeasonDataAll() (*SeasonJikan, []byte, error) {
color.Infoln("Aktuelle Season abfragen...")
data, bytes, err := GetSeasonDataJikan(1)
data, bytes, err := GetSeasonData(1)
if err != nil {
return data, bytes, err
}
@@ -21,7 +59,7 @@ func GetSeasonDataAll() (*SeasonJikan, []byte, error) {
for i := 2; data.Pagination.HasNextPage; i++ {
color.Infof("Seite %d abfragen...\n", i)
time.Sleep(time.Second)
newData, _, err := GetSeasonDataJikan(i)
newData, _, err := GetSeasonData(i)
if err != nil {
return data, nil, err
}
@@ -35,23 +73,23 @@ func GetSeasonDataAll() (*SeasonJikan, []byte, error) {
return data, bytes, err
}
func GetSeasonBytesJikan(page int) ([]byte, error) {
func GetSeasonData(page int) (*SeasonJikan, []byte, error) {
var data SeasonJikan
body, err := GetSeasonBytes(page)
if err != nil {
return nil, body, err
}
err = json.Unmarshal(body, &data)
return &data, body, err
}
func GetSeasonBytes(page int) ([]byte, error) {
if page != 0 {
return GetDataJikan(seasonApiJikan + "?page=" + strconv.Itoa(page))
}
return GetDataJikan(seasonApiJikan)
}
func GetSeasonDataJikan(page int) (*SeasonJikan, []byte, error) {
var data SeasonJikan
body, err := GetSeasonBytesJikan(page)
if err != nil {
return nil, nil, err
}
err = json.Unmarshal(body, &data)
return &data, body, err
}
func GetDataMal(apiAddr string) ([]byte, error) {
var body []byte
req := fasthttp.AcquireRequest()