package main import ( "encoding/json" "fmt" "io" "net/http" ) func get_courses(token string, link string, client http.Client) []CanvasCourse { resp, err := client.Get(link) if err != nil { // handle error } defer resp.Body.Close() body, err := io.ReadAll(resp.Body) var canvas_courses []CanvasCourse err2 := json.Unmarshal(body, &canvas_courses) if err2 != nil { fmt.Println(err2) return nil } return canvas_courses } func get_aplus(token string, link string, client http.Client) string { resp, err := client.Get(link) if err != nil { // handle error } defer resp.Body.Close() body, err := io.ReadAll(resp.Body) var aplus Aplus json.Unmarshal(body, &aplus) return aplus.URL } func get_course_ids(canvas_courses []CanvasCourse) []uint64 { var courses []uint64 for _, course := range canvas_courses { courses = append(courses, course.ID%10000) } return courses } func main() { client := http.Client{ CheckRedirect: func(req *http.Request, via []*http.Request) error { fmt.Println("Redirected to:", req.URL) return nil }, } // https://canvas.instructure.com/api/v1/courses?access_token={}&per_page=100", canvas_token base_link := "https://floridapolytechnic.instructure.com/api/v1" token := "insert api key here" //favorites := fmt.Sprintf("%s/users/self/favorites/courses?access_token=%s&per_page=100", base_link, token) //all_courses := fmt.Sprintf("%s/courses?access_token=%s&per_page=100", base_link,token) //var canvas_courses []CanvasCourse //canvas_courses = get_courses(token, favorites, client) //var course_ids []uint64 //course_ids = get_course_ids(canvas_courses) //selected := 1 // course_ids[selected] aplus_link := fmt.Sprintf("%s/courses/%d/external_tools/sessionless_launch?id=913&access_token=%s", base_link, 7329, token) // 7329 always works var aplus string aplus = get_aplus(token, aplus_link, client) fmt.Println(aplus) resp, err := client.Get(aplus) if err != nil { // handle error } //fmt.Println(resp) defer resp.Body.Close() //body, err := io.ReadAll(resp.Body) //fmt.Println(string(body)) //fmt.Println(resp) }