package main import ( "fmt" "net/http" "os" "git.directme.in/Joren/CanvasArchiver/internal/auth" "git.directme.in/Joren/CanvasArchiver/internal/canvas" "git.directme.in/Joren/CanvasArchiver/internal/panopto" "git.directme.in/Joren/CanvasArchiver/internal/utils" ) func main() { httpClient := &http.Client{} authenticator := auth.NewAuthenticator(httpClient) accessToken, err := authenticator.GetAccessToken() if err != nil { fmt.Printf("Authentication failed: %v\n", err) return } var courseID string fmt.Print("Enter Course ID: ") fmt.Scanln(&courseID) canvasClient := canvas.NewClient(httpClient, accessToken, courseID) if err := canvasClient.GetCourseInfo(); err != nil { fmt.Printf("Error: %v\n", err) return } courseRoot := utils.Sanitize(canvasClient.CourseName) fmt.Printf("[+] Target Course: %s\n", canvasClient.CourseName) os.MkdirAll(courseRoot, 0o755) canvasClient.DownloadCourseFiles(courseRoot) canvasClient.DownloadModules(courseRoot) panopto.DownloadMainRecordings(httpClient, accessToken, courseID, courseRoot) }