From 017df270608e286c8ce85683629d5c2dcf400988 Mon Sep 17 00:00:00 2001 From: Vidhu Kant Sharma Date: Thu, 24 Feb 2022 22:17:51 +0530 Subject: fixed mutliple bugs in GetMangaList --- user/manga/mangalist.go | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) (limited to 'user') diff --git a/user/manga/mangalist.go b/user/manga/mangalist.go index 392e844..009a65c 100644 --- a/user/manga/mangalist.go +++ b/user/manga/mangalist.go @@ -22,6 +22,7 @@ import ( "fmt" "errors" e "github.com/MikunoNaka/MAL2Go/errhandlers" + u "github.com/MikunoNaka/MAL2Go/util" ) const BASE_URL string = "https://api.myanimelist.net/v2" @@ -36,7 +37,7 @@ func (c Client)DeleteManga(id int) string { } // Get authenticated user's manga list -func (c Client) GetMangaList(user, status, sort string, limit, offset int) (MangaList, error){ +func (c Client) GetMangaList(user, status, sort string, limit, offset int, fields []string) (MangaList, error){ var userMangaList MangaList // error handling for limit limitErr := e.LimitErrHandler(limit, maxListLimit) @@ -44,6 +45,15 @@ func (c Client) GetMangaList(user, status, sort string, limit, offset int) (Mang return userMangaList, limitErr } + // handle all the errors for the fields + fields, err := e.FieldsErrHandler(fields) + if err != nil { + return userMangaList, err + } + + // append "list_status" field only used by this func. + fields = append(fields, "list_status") + // checks if valid sort is specified if !e.IsValidMangaListSort(sort) { return userMangaList, errors.New(fmt.Sprintf("GetMangaList: Invalid sort specified: \"%s\"", sort)) @@ -59,12 +69,23 @@ func (c Client) GetMangaList(user, status, sort string, limit, offset int) (Mang user = "@me" } - // if status is "" it returns all anime var endpoint string + // if status is "" it returns all anime if status == "" { - endpoint = BASE_URL + "/users/" + user + "/mangalist?sort=" + sort + "&limit=" + strconv.Itoa(limit) + "&offset=" + strconv.Itoa(offset) + endpoint, _ = u.UrlGenerator( + BASE_URL + "/users/" + user + "/mangalist", + []string{"sort", "limit", "offset", "fields"}, + [][]string{{sort}, {strconv.Itoa(limit)}, {strconv.Itoa(offset)}, fields}, + true, + ) } else { - endpoint = BASE_URL + "/users/" + user + "/mangalist?status=" + status + "&sort=" + sort + "&limit=" + strconv.Itoa(limit) + "&offset=" + strconv.Itoa(offset) + // status gets included if specified + endpoint, _ = u.UrlGenerator( + BASE_URL + "/users/" + user + "/mangalist", + []string{"status", "sort", "limit", "offset", "fields"}, + [][]string{{status}, {sort}, {strconv.Itoa(limit)}, {strconv.Itoa(offset)}, fields}, + true, + ) } // get data from API -- cgit v1.2.3