A Javascript abstraction of McGill's Minerva. It can:
- fetch your transcript as json
- search for courses (by department, course number and semester)
- add/drop courses
Install the module with: npm install mcgill-minerva-api
var Minerva = require('mcgill-minerva-api');
var minerva = new Minerva(username, password); // or store 'em in environment MG_USER & MG_PASS
minerva.getCourses({
dep: 'COMP',
number: '250',
season: 'w',
year: '2015'
}).then(function(courses) {
console.log(courses);
// => [{
// is_full false,
// crn: '709',
// department: 'COMP',
// course_number: '250',
// type: 'Lecture',
// days: ['MWF'],
// time: ['09:35 AM-10:25 AM'],
// instructor: 'Martin Robillard',
// status: 'Active'
// },{
// ...
// }]
});
Minerva
's functions are promises, see Kris Kowal's very excellent
Q module. Therefore, to use the
results of the function you need to chain chain a then
with a
callback.
getTranscript()
: returns a promise for an array of courses. Course example:
{
"completed": " " || "RW", // Web registered or not
"department": "COMP",
"course_number": "208",
"section": "001",
"credit": "2",
"grade": "A",
"class_avg": "A"
}
getCourses(options)
: returns a promise for an array of courses searched on minerva (for regitration).options
takes :dep:
, e.g. "MATH",number
, e.g. "280",season
, takesw
,s
, orf
.year
, takes XXXX, Return value example:
{
"is_full": true || false,
"crn": '709',
"department": 'COMP',
"course_number": '250',
"type": 'Lecture',
"days": ['MWF'],
"time": ['09:35 AM-10:25 AM'],
"instructor": 'Martin Robillard',
"status": 'Active'
}
addCourses(options)
: returns a promise for registration of courses by crn.options
takes:season
,w
,s
, orf
;year
, e.g. 2015;crn
, crn string or array of crns (course reference numbers)
dropCourses(options)
: returns a promise for the opposite of add courses.
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.
Copyright (c) 2014 Charles P Clermont. Licensed under the MIT license.