From a835f9b0b8b714a76d8b2f9c49b84f7042ddbd6a Mon Sep 17 00:00:00 2001 From: Vidhu Kant Sharma Date: Mon, 31 Jan 2022 10:35:43 +0530 Subject: distributed code among multiple files for simplicity --- anime/anime.go | 47 -------------------------------------- anime/anime.structs.go | 1 + anime/util.go | 33 +++++++++++++++++++++++++++ anime/validators.go | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 95 insertions(+), 47 deletions(-) create mode 100644 anime/util.go create mode 100644 anime/validators.go diff --git a/anime/anime.go b/anime/anime.go index c397d93..7e5cf70 100644 --- a/anime/anime.go +++ b/anime/anime.go @@ -3,38 +3,9 @@ package anime import ( "encoding/json" "fmt" - "io/ioutil" - "log" - "net/http" "errors" ) -func requestHandler(token string, endpoint string) string { - client := &http.Client{} - - // generate request - req, err := http.NewRequest("GET", endpoint, nil) - if err != nil { - log.Fatal(err) - } - req.Header.Add("Authorization", token) - - // do request - res, err := client.Do(req) - if err != nil { - log.Fatal(err) - } - defer res.Body.Close() - - // read body - body, err := ioutil.ReadAll(res.Body) - if err != nil { - log.Fatal(err) - } - - return string(body) -} - // Each anime has its own ID on MAL 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) @@ -46,24 +17,6 @@ func GetAnimeById(token string, animeId int) 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 -} - // Ranking is a list of anime sorted by their rank func GetAnimeRanking(token string, rankingType string) (AnimeRanking, error) { var animeRanking AnimeRanking diff --git a/anime/anime.structs.go b/anime/anime.structs.go index bb35ded..a5e7d8e 100644 --- a/anime/anime.structs.go +++ b/anime/anime.structs.go @@ -61,6 +61,7 @@ type Anime struct { Id int `json:"id"` Title string `json:"title"` MainPicture AnimePicture `json:"main_picture"` + // TODO: AltTitles should also have options for JP and EN Titles AltTitles []string `json:"alternative_titles"` StartDate string `json:"start_date"` EndDate string `json:"end_date"` diff --git a/anime/util.go b/anime/util.go new file mode 100644 index 0000000..319bbc9 --- /dev/null +++ b/anime/util.go @@ -0,0 +1,33 @@ +package anime + +import ( + "io/ioutil" + "log" + "net/http" +) + +func requestHandler(token string, endpoint string) string { + client := &http.Client{} + + // generate request + req, err := http.NewRequest("GET", endpoint, nil) + if err != nil { + log.Fatal(err) + } + req.Header.Add("Authorization", token) + + // do request + res, err := client.Do(req) + if err != nil { + log.Fatal(err) + } + defer res.Body.Close() + + // read body + body, err := ioutil.ReadAll(res.Body) + if err != nil { + log.Fatal(err) + } + + return string(body) +} diff --git a/anime/validators.go b/anime/validators.go new file mode 100644 index 0000000..3f66abe --- /dev/null +++ b/anime/validators.go @@ -0,0 +1,61 @@ +package 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 +} + +// Checks if given rankingType is valid +func areValidFields(field string) bool { + switch field { + case + "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", + "avarage_episode_duration", + "rating", + "pictures", + "background", + "related_anime", + "related_manga", + "recommendations", + "studios", + "statistics": + return true + } + return false +} + -- cgit v1.2.3