UNPKG

ecoledirecte.js

Version:

Good-looking client for EcoleDirecte's private API.

59 lines (58 loc) 2 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Session = void 0; const v3_1 = require("ecoledirecte-api-types/v3"); const util_1 = require("./util"); const accounts_1 = require("./accounts"); const errors_1 = require("./errors"); const events_1 = __importDefault(require("./events")); class Session { get token() { return this._token; } set token(value) { events_1.default.emit("newToken", { oldToken: this._token, newToken: value, session: this, }); this._token = value; } constructor(username, password) { this._token = ""; (this._username = username), (this._password = password); } async login(context = {}) { const { _username: username, _password: password } = this; const loginRes = await (0, util_1.login)(username, password, context); this.loginRes = loginRes; this.token = loginRes.token; if ((0, v3_1.isFailure)(loginRes)) throw new errors_1.EcoleDirecteAPIError(loginRes); // Login succeeded const account = (0, util_1.getMainAccount)(loginRes.data.accounts); switch (account.typeCompte) { case "E": return new accounts_1.Student(this); case "1": return new accounts_1.Family(this); case "P": return new accounts_1.Teacher(this); case "A": return new accounts_1.Staff(this); default: throw new Error(`UNKNOWN ACCOUNT TYPE: '${account.typeCompte}'`); } } /** * @returns Given credentials */ get credentials() { const credentials = { username: this._username, password: this._password }; return credentials; } } exports.Session = Session;