diff options
author | Vidhu Kant Sharma <vidhukant@protonmail.ch> | 2022-01-30 16:13:36 +0530 |
---|---|---|
committer | Vidhu Kant Sharma <vidhukant@protonmail.ch> | 2022-01-30 16:13:36 +0530 |
commit | b876d3bea001718492fa289ebeba69d2989ddaf3 (patch) | |
tree | 7ddc544b49d8e4e7f262152055cde01b7372eaa1 /anime | |
parent | e38b4ae7575df9be1a89265e66ad3808a4443082 (diff) |
Added error handling for getting ranking
Diffstat (limited to 'anime')
-rw-r--r-- | anime/anime.go | 37 |
1 files changed, 33 insertions, 4 deletions
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)) + } +} |