aplus

A+Attendance CLI utility via Instructure Canvas
Log | Files | Refs | README | LICENSE

commit aa16b741d54325527eb6bea451cb24526551ab52
parent dc7d8df66bb78485cd935118c4840fde4cb6fe4e
Author: Juan Roig <jaroig@outlook.com>
Date:   Tue, 14 Nov 2023 04:23:18 -0500

Add list courses functions, remove unnecessary functions, update README.

Diffstat:
MREADME.md | 19+++++++++++++++----
Maplus.go | 3++-
Mcanvas.go | 31++++++++++++++-----------------
Mmain.go | 1+
4 files changed, 32 insertions(+), 22 deletions(-)

diff --git a/README.md b/README.md @@ -1,13 +1,23 @@ # aplus -aplus cli +This is an aplus cli utility created for students at Florida Polytechnic University to submit their aplus codes through the CLI. +In time, we intend to generalize this utility to all universities. +In the meantime however, any students from other universities wishing to use the utility may change the base_link and external_tools_code (you see this in the URL when you navigate to Aplus attendance within your course) variables. -# Usage +## Usage -# Launch interactive prompt +### List all courses and canvas course codes aplus +aplus --list-courses +aplus -l -# Enter code immediately +### List favorite courses and canvas course codes +aplus --list-favorites + +### Enter code immediately for an active code aplus -c <code> aplus --code <code> +### Enter code for a specified course +aplus -c <code> --course <course_code> +aplus --code <code> --course <course_code> +\ No newline at end of file diff --git a/aplus.go b/aplus.go @@ -11,7 +11,8 @@ import ( ) func launch_aplus(course_code int) { - aplus_link := fmt.Sprintf("%s/courses/%d/external_tools/sessionless_launch?id=913&access_token=%s", base_link, course_code, token) // 7329 always works + aplus_link := fmt.Sprintf("%s/courses/%d/external_tools/sessionless_launch?id=%d&access_token=%s", + base_link, course_code, external_tools_code, token) aplus := get_aplus(token, aplus_link, client) resp, _ := client.Get(aplus) diff --git a/canvas.go b/canvas.go @@ -14,7 +14,7 @@ import ( func initialize() { base_link = "https://floridapolytechnic.instructure.com/api/v1" token = os.Getenv("CANVAS_API_KEY") - + external_tools_code = 913 jar, _ := cookiejar.New(&cookiejar.Options{ PublicSuffixList: publicsuffix.List, }) @@ -48,27 +48,24 @@ func get_courses(token string, link string, client http.Client) []CanvasCourse { return canvas_courses } -// Need to change this to grab both ID and name, return as pairs. -func get_course_id_name_pair(canvas_courses []CanvasCourse) []uint64 { - var courses []uint64 +func list_all_courses() { + all_courses := fmt.Sprintf("%s/courses?access_token=%s&per_page=100", base_link, token) + + canvas_courses := get_courses(token, all_courses, client) for _, course := range canvas_courses { - courses = append(courses, course.ID%10000) + fmt.Printf("%s, %d\n", course.Name, course.ID%10000) } - return courses } -/* -func select_course() int { +func list_favorite_courses() { + // course selection by user happens below 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] - // course selection by user happens above - return 0 + + canvas_courses := get_courses(token, favorites, client) + + for _, course := range canvas_courses { + fmt.Printf("%s, %d\n", course.Name, course.ID%10000) + } } -*/ diff --git a/main.go b/main.go @@ -6,6 +6,7 @@ import ( var base_link string var token string +var external_tools_code int var client http.Client func main() {