aboutsummaryrefslogtreecommitdiff
path: root/anime/anime.go
diff options
context:
space:
mode:
authorVidhu Kant Sharma <vidhukant@protonmail.ch>2022-01-30 16:13:36 +0530
committerVidhu Kant Sharma <vidhukant@protonmail.ch>2022-01-30 16:13:36 +0530
commitb876d3bea001718492fa289ebeba69d2989ddaf3 (patch)
tree7ddc544b49d8e4e7f262152055cde01b7372eaa1 /anime/anime.go
parente38b4ae7575df9be1a89265e66ad3808a4443082 (diff)
Added error handling for getting ranking
Diffstat (limited to 'anime/anime.go')
-rw-r--r--anime/anime.go37
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))
+ }
+}