aboutsummaryrefslogtreecommitdiff
path: root/anime/anime.go
diff options
context:
space:
mode:
authorVidhu Kant Sharma <vidhukant@protonmail.ch>2022-02-05 22:15:48 +0530
committerVidhu Kant Sharma <vidhukant@protonmail.ch>2022-02-05 22:15:48 +0530
commite550d3d71360c4da68c7f9e978ef45f05e68b216 (patch)
tree555b38f89250f0fa2f343966ff45a4a7089f1cfd /anime/anime.go
parentf3ec24145da97fa7e4a5687503a6f46d59ff8c2a (diff)
implemented function for get suggested anime endpoint
Diffstat (limited to 'anime/anime.go')
-rw-r--r--anime/anime.go58
1 files changed, 50 insertions, 8 deletions
diff --git a/anime/anime.go b/anime/anime.go
index 6c65138..3344016 100644
--- a/anime/anime.go
+++ b/anime/anime.go
@@ -20,7 +20,6 @@ import (
"encoding/json"
"errors"
"fmt"
- "log"
"strconv"
)
@@ -33,13 +32,13 @@ func SearchAnime(token, searchString string, limit, offset int, fields []string)
// error handling for limit and offset
limitsErr := limitsErrHandler(limit, offset)
if limitsErr != nil {
- log.Println(limitsErr)
+ return searchResults, limitsErr
}
// handle all the errors for the fields
fields, err := fieldsErrHandler(fields)
if err != nil {
- log.Println(err)
+ return searchResults, err
}
// generate endpoint url with custom params
@@ -77,7 +76,7 @@ func GetAnimeById(token string, animeId int, fields []string) (Anime, error) {
// handle all the errors for the fields
fields, err := fieldsErrHandler(fields)
if err != nil {
- log.Println(err)
+ return anime, err
}
endpoint, _ := urlGenerator(
@@ -103,13 +102,13 @@ func GetAnimeRanking(token string, rankingType string, limit, offset int, fields
// error handling for limit and offset
limitsErr := limitsErrHandler(limit, offset)
if limitsErr != nil {
- log.Println(limitsErr)
+ return animeRanking, limitsErr
}
// handle all the errors for the fields
fields, err := fieldsErrHandler(fields)
if err != nil {
- log.Println(err)
+ return animeRanking, err
}
// if ranking type is invalid
@@ -160,13 +159,13 @@ func GetSeasonalAnime(token, year, season, sort string, limit, offset int, field
// error handling for limit and offset
limitsErr := limitsErrHandler(limit, offset)
if limitsErr != nil {
- log.Println(limitsErr)
+ return seasonalAnime, limitsErr
}
// handle all the errors for the fields
fields, err := fieldsErrHandler(fields)
if err != nil {
- log.Println(err)
+ return seasonalAnime, err
}
// checks if valid season is specified
@@ -206,3 +205,46 @@ func GetSeasonalAnime(token, year, season, sort string, limit, offset int, field
return seasonalAnime, nil
}
+
+// get anime suggestions for the user
+func GetSuggestedAnime(token string, limit, offset int, fields []string) (SuggestedAnime, error){
+ var suggestedAnime SuggestedAnime
+
+ // error handling for limit and offset
+ limitsErr := limitsErrHandler(limit, offset)
+ if limitsErr != nil {
+ return suggestedAnime, limitsErr
+ }
+
+ // handle all the errors for the fields
+ fields, err := fieldsErrHandler(fields)
+ if err != nil {
+ return suggestedAnime, err
+ }
+
+ endpoint, _ := urlGenerator(
+ BASE_URL + "/suggestions",
+ []string{"limit", "offset", "fields"},
+ [][]string{{strconv.Itoa(limit)}, {strconv.Itoa(offset)}, fields},
+ true,
+ )
+
+ // gets data from API and stores it in a struct
+ var suggestedAnimeData SuggestedAnimeRaw
+ data := requestHandler(token, endpoint)
+ json.Unmarshal([]byte(data), &suggestedAnimeData)
+
+ // Adding all the animes to another list to get formatted results later
+ var animes []Anime
+ for _, element := range suggestedAnimeData.Data {
+ animes = append(animes, element.Anime)
+ }
+
+ // finally generate RecommendedAnime struct
+ suggestedAnime = SuggestedAnime {
+ Animes: animes,
+ Paging: suggestedAnimeData.Paging,
+ }
+
+ return suggestedAnime, nil
+}