package main import ( "encoding/json" "fmt" "io" "log" "net/http" "net/url" "strconv" "strings" ) func MALHelper(method string, malUrl string, body url.Values) json.RawMessage { client := &http.Client{} req, _ := http.NewRequest(method, malUrl, strings.NewReader(body.Encode())) req.Header.Add("Content-Type", "application/x-www-form-urlencoded") req.Header.Add("Authorization", "Bearer "+myAnimeListJwt.AccessToken) resp, err := client.Do(req) if err != nil { fmt.Println("Errored when sending request to the server") message, _ := json.Marshal(struct { Message string `json:"message" ts_type:"message"` }{ Message: "Errored when sending request to the server" + err.Error(), }) return message } defer resp.Body.Close() respBody, _ := io.ReadAll(resp.Body) return respBody } func (a *App) GetMyAnimeList(count int) MALWatchlist { limit := strconv.Itoa(count) user := a.GetMyAnimeListLoggedInUser() malUrl := "https://api.myanimelist.net/v2/users/" + user.Name + "/animelist?fields=list_status&status=watching&limit=" + limit var malList MALWatchlist respBody := MALHelper("GET", malUrl, nil) err := json.Unmarshal(respBody, &malList) if err != nil { log.Printf("Failed to unmarshal json response, %s\n", err) } return malList } func (a *App) MyAnimeListUpdate(anime MALAnime, update interface{}) MyListStatus { //var body url.Values return MyListStatus{} } func (a *App) GetMyAnimeListAnime(id int) MALAnime { malUrl := "https://api.myanimelist.net/v2/anime/" + strconv.Itoa(id) + "?fields=id,title,main_picture,alternative_titles,start_date,end_date,synopsis,mean,rank,popularity,num_list_users,num_scoring_users,nsfw,genres,created_at,updated_at,media_type,status,my_list_status,num_episodes,start_season,broadcast,source,average_episode_duration,rating,pictures,background,related_anime,recommendations,studios,statistics" respBody := MALHelper("GET", malUrl, nil) var malAnime MALAnime err := json.Unmarshal(respBody, &malAnime) if err != nil { log.Printf("Failed to unmarshal json response, %s\n", err) } return malAnime }