aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVidhu Kant Sharma <vidhukant@protonmail.ch>2022-01-31 10:35:43 +0530
committerVidhu Kant Sharma <vidhukant@protonmail.ch>2022-01-31 10:35:43 +0530
commita835f9b0b8b714a76d8b2f9c49b84f7042ddbd6a (patch)
tree5ace332b135b6dbd36281ba57c3edfa367ba4e91
parent02752551dec484dd0e2b6f50158f516fd5d5c39d (diff)
distributed code among multiple files for simplicity
-rw-r--r--anime/anime.go47
-rw-r--r--anime/anime.structs.go1
-rw-r--r--anime/util.go33
-rw-r--r--anime/validators.go61
4 files changed, 95 insertions, 47 deletions
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
+}
+