From b876d3bea001718492fa289ebeba69d2989ddaf3 Mon Sep 17 00:00:00 2001 From: Vidhu Kant Sharma Date: Sun, 30 Jan 2022 16:13:36 +0530 Subject: Added error handling for getting ranking --- anime/anime.go | 37 +++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) (limited to 'anime') diff --git a/anime/anime.go b/anime/anime.go index 5d054ab..e9ef70f 100644 --- a/anime/anime.go +++ b/anime/anime.go @@ -8,9 +8,8 @@ import ( "net/http" ) -func GetAnimeById(token string, animeId int) Anime { +func requestHandler(token string, endpoint string) string { client := &http.Client{} - endpoint := fmt.Sprintf("https://api.myanimelist.net/v2/anime/%d?fields=id,title,main_picture,alternative_titles,start_date,end_date,synopsis,mean,rank,popularity,num_list_users,num_scoring_users,nsfw,created_at,updated_at,media_type,status,genres,my_list_status,num_episodes,start_season,broadcast,source,average_episode_duration,rating,pictures,background,related_anime,related_manga,recommendations,studios,statistics", animeId) // generate request req, err := http.NewRequest("GET", endpoint, nil) @@ -18,7 +17,6 @@ func GetAnimeById(token string, animeId int) Anime { log.Fatal(err) } req.Header.Add("Authorization", token) - // req.Header.Add("Content-Type", "application/json") // do request res, err := client.Do(req) @@ -27,14 +25,45 @@ func GetAnimeById(token string, animeId int) Anime { } defer res.Body.Close() + // read body body, err := ioutil.ReadAll(res.Body) if err != nil { log.Fatal(err) } - data := string(body) + return string(body) +} + +func GetAnimeById(token string, animeId int) Anime { + endpoint := fmt.Sprintf("https://api.myanimelist.net/v2/anime/%d?fields=id,title,main_picture,alternative_titles,start_date,end_date,synopsis,mean,rank,popularity,num_list_users,num_scoring_users,nsfw,created_at,updated_at,media_type,status,genres,my_list_status,num_episodes,start_season,broadcast,source,average_episode_duration,rating,pictures,background,related_anime,related_manga,recommendations,studios,statistics", animeId) + + data := requestHandler(token, endpoint) var anime Anime json.Unmarshal([]byte(data), &anime) return anime } + +// Checks if given rankingType is valid +func isValidRankingType(rankingType string) bool { + switch rankingType { + case + "all", + "airing", + "upcoming", + "tv", + "ova", + "movie", + "special", + "bypopularity", + "favorite": + return true + } + return false +} + +func GetAnimeRanking(token string, rankingType string) { + if !isValidRankingType(rankingType) { + log.Fatal(fmt.Sprintf("GetAnimeRanking: Invalid Ranking Type Given (\"%s\")", rankingType)) + } +} -- cgit v1.2.3