cu-api
Version:
An api for CU Boulder students.
60 lines (59 loc) • 2.79 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const chalk = require("chalk");
const inquirer = require("inquirer");
const session_1 = require("../session");
function toPlace(number, place = 2) {
return Math.round(Math.pow(10, place) * number) / Math.pow(10, place);
}
function getSession() {
return __awaiter(this, void 0, void 0, function* () {
const { username, password } = yield inquirer.prompt([
{
type: 'input',
name: 'username',
message: 'Identikey Login?'
},
{
type: 'password',
name: 'password',
message: 'Password?'
}
]);
const session = new session_1.CUSession();
yield session.init(username, password);
return session;
});
}
const getGpa = () => __awaiter(void 0, void 0, void 0, function* () {
const session = yield getSession();
const gpa = parseFloat((yield session.GPA()).cumGpa);
console.log(`${chalk.green('GPA')}: ${chalk.blue(gpa)} (${chalk.blue(toPlace((gpa / 4) * 100))}%)`);
});
const getCourses = () => __awaiter(void 0, void 0, void 0, function* () {
var _a, _b;
const session = yield getSession();
const terms = yield session.termData();
const currentTerm = terms.find((term) => term.attributeName === 'NEXT_TERM');
if (!currentTerm) {
throw new Error('Could not find current term data.');
}
const courses = Array.from((yield session.classTermData(currentTerm.term4)).values());
for (let course of courses) {
console.log(`${chalk.green(course.courseTitleLong)} ${chalk.blue(`(${course.subject} ${course.catalogNbr}-${course.classSection}) ${chalk.red(`${course.untTaken} credits`)}`)}`);
for (let instructor of (_b = (_a = course.classMtgPatterns[0]) === null || _a === void 0 ? void 0 : _a.instructors) !== null && _b !== void 0 ? _b : []) {
console.log(`\t${instructor.instructorName} - ${instructor.instrEmailAddr}`);
}
}
});
getCourses();