ecoledirecte.js
Version:
Good-looking client for EcoleDirecte's private API.
74 lines (73 loc) • 2.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.tickAssignement = exports.Assignement = void 0;
const v3_1 = require("ecoledirecte-api-types/v3");
const util_1 = require("../util");
const classes_1 = require("../classes");
class Assignement {
constructor(o, date, student) {
this.id = o.id;
this.date = new Date(date);
this.test = o.interrogation;
this.subject = {
name: o.matiere,
code: o.codeMatiere,
};
this.teacher = o.nomProf.startsWith(" par ")
? o.nomProf.substr(5)
: o.nomProf;
this.job = o.aFaire
? {
content: new classes_1.ExpandedBase64(o.aFaire.contenu),
givenAt: new Date(o.aFaire.donneLe),
toReturnOnline: o.aFaire.rendreEnLigne,
done: o.aFaire.effectue,
lastContenuDeSeance: {
content: new classes_1.ExpandedBase64(o.aFaire.contenuDeSeance.contenu),
documents: o.aFaire.contenuDeSeance.documents,
},
tick: async (newState) => {
if (!this.job)
throw new Error("'job' should be here");
if (newState === undefined)
newState = !this.job.done;
const res = await tickAssignement(student._raw.id, student.token, o, newState);
student.token = (res === null || res === void 0 ? void 0 : res.token) || student.token;
this.job.done = newState;
return newState;
},
}
: undefined;
this.contenuDeSeance = o.contenuDeSeance
? {
homeworkId: o.contenuDeSeance.idDevoir,
content: new classes_1.ExpandedBase64(o.contenuDeSeance.contenu),
documents: o.contenuDeSeance.documents,
}
: undefined;
this._raw = o;
}
}
exports.Assignement = Assignement;
async function tickAssignement(id, token, assignement, state) {
var _a;
if (!("aFaire" in assignement))
throw Error("No work in this assignement.");
if (state === undefined)
state = !((_a = assignement.aFaire) === null || _a === void 0 ? void 0 : _a.effectue);
const data = {
token: token,
};
if (state)
data.idDevoirsEffectues = [assignement.id];
if (!state)
data.idDevoirsNonEffectues = [assignement.id];
const body = await (0, util_1.makeRequest)({
method: "POST",
path: v3_1.Routes.studentHomework(id, { verbe: "put" }),
body: data,
guard: true,
});
return body;
}
exports.tickAssignement = tickAssignement;