ecoledirecte.js
Version:
Good-looking client for EcoleDirecte's private API.
59 lines (58 loc) • 2 kB
JavaScript
;
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;