aplus/main.go

121 lines
3.2 KiB
Go
Raw Permalink Normal View History

2023-10-27 19:02:38 -04:00
package main
import (
"flag"
2023-11-14 22:42:25 -05:00
"fmt"
2023-10-27 19:02:38 -04:00
"net/http"
"os"
2024-01-12 19:15:35 -05:00
"runtime/pprof"
2023-10-27 19:02:38 -04:00
)
var base_link string
var base_aplus_link string
var external_tools_code int
var token string
var client http.Client
2023-11-21 11:07:28 -05:00
var verbose bool
func usage() {
2024-01-16 14:50:19 -05:00
fmt.Println("Usage: aplus --code attendance_code --course course_code [--list] [--listfav] [--timetable] [--help]")
2023-11-20 15:41:28 -05:00
fmt.Println(" -c, --code\tfive character attendance code")
fmt.Println(" -C, --course\tcanvas course ID")
fmt.Println(" -L, --list\tlists canvas courses with name and ID")
fmt.Println(" -F, --listfav\tlists favourited canvas courses with name and ID")
2024-01-16 14:50:19 -05:00
fmt.Println(" -t, --timetable\tlists the class sessions in a course")
2023-11-21 11:07:28 -05:00
fmt.Println(" -v, --verbose\tprints with verbose output")
2023-11-20 15:41:28 -05:00
fmt.Println(" -h, --help\tdisplays this help message")
fmt.Println(" -p, --profile\twrites cpu profile to a file (for debugging/optimizing)")
}
2023-10-27 19:02:38 -04:00
func main() {
initialize()
2023-11-04 01:55:30 -04:00
var code string
var course int
var listall bool
var listfav bool
2024-01-16 14:50:19 -05:00
var timetable_ bool
var help bool
2024-01-12 19:15:35 -05:00
var cpuprofile string
flag.StringVar(&code, "code", "", "5 character attendance code")
flag.StringVar(&code, "c", "", "5 character attendance code")
flag.IntVar(&course, "course", -1, "canvas course code")
flag.IntVar(&course, "C", -1, "canvas course code")
flag.BoolVar(&listall, "list", false, "list all canvas courses")
flag.BoolVar(&listall, "L", false, "list all canvas courses")
flag.BoolVar(&listfav, "listfav", false, "list favorited canvas courses")
flag.BoolVar(&listfav, "F", false, "list favorited canvas courses")
2024-01-16 14:50:19 -05:00
flag.BoolVar(&timetable_, "t", false, "lists the class sessions in a course")
flag.BoolVar(&timetable_, "timetable", false, "lists the class sessions in a course")
2023-11-21 11:07:28 -05:00
flag.BoolVar(&verbose, "verbose", false, "verbose output")
flag.BoolVar(&verbose, "v", false, "verbose output")
flag.BoolVar(&help, "help", false, "view usage message")
flag.BoolVar(&help, "h", false, "view usage message")
2024-01-12 19:15:35 -05:00
flag.StringVar(&cpuprofile, "p", "", "CPU profiling report location")
flag.StringVar(&cpuprofile, "profile", "", "CPU profiling report location")
2023-10-30 17:58:38 -04:00
flag.Parse()
2024-01-12 19:15:35 -05:00
if cpuprofile != "" {
cpuf, err := os.Create(cpuprofile)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
defer cpuf.Close()
err = pprof.StartCPUProfile(cpuf)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
defer pprof.StopCPUProfile()
}
2023-11-20 15:41:28 -05:00
if code == "" && course == -1 && !listall && !listfav && !help {
usage()
os.Exit(1)
}
2023-11-14 22:42:25 -05:00
2023-11-20 15:41:28 -05:00
if listall {
_ = list_all_courses(false)
os.Exit(0)
2023-11-14 22:42:25 -05:00
}
2023-11-20 15:41:28 -05:00
if listfav {
2023-11-14 22:42:25 -05:00
list_favorite_courses()
os.Exit(0)
}
2024-01-16 14:50:19 -05:00
if course != -1 && timetable_ {
timetable(course)
os.Exit(0)
} else if course == -1 && timetable_ {
fmt.Println("Course code required for timetable")
usage()
os.Exit(1)
}
2023-11-20 15:41:28 -05:00
if help {
usage()
os.Exit(0)
}
2023-11-20 15:41:28 -05:00
if len(code) == 5 && course != -1 {
fmt.Printf("%d %s\n", course, code)
submit_code(course, code)
2023-11-20 15:41:28 -05:00
} else if code == "" && course != -1 {
fmt.Println("Attendance code not provided")
usage()
os.Exit(1)
} else if len(code) != 5 {
fmt.Println("Attendance code must be 5 characters long")
usage()
os.Exit(1)
} else if len(code) == 5 && course == -1 {
fmt.Println("Checking which course to send the code to")
submit_code_sans_course(code)
2023-11-14 22:42:25 -05:00
}
2023-11-04 01:55:30 -04:00
}