summaryrefslogtreecommitdiff
path: root/alarm/node_modules/pronote-api/src/fetch/contents.js
diff options
context:
space:
mode:
Diffstat (limited to 'alarm/node_modules/pronote-api/src/fetch/contents.js')
-rw-r--r--alarm/node_modules/pronote-api/src/fetch/contents.js51
1 files changed, 51 insertions, 0 deletions
diff --git a/alarm/node_modules/pronote-api/src/fetch/contents.js b/alarm/node_modules/pronote-api/src/fetch/contents.js
new file mode 100644
index 0000000..62e85df
--- /dev/null
+++ b/alarm/node_modules/pronote-api/src/fetch/contents.js
@@ -0,0 +1,51 @@
+const { toPronoteWeek } = require('../data/dates');
+const { getFileURL } = require('../data/files');
+const fromHTML = require('../data/html');
+const { withId, checkDuplicates } = require('../data/id');
+
+const getContents = require('./pronote/contents');
+
+async function contents(session, user, from = new Date(), to = null)
+{
+ if (!to || to < from) {
+ to = new Date(from.getTime());
+ to.setDate(to.getDate() + 1);
+ }
+
+ const fromWeek = toPronoteWeek(session, from);
+ const toWeek = toPronoteWeek(session, to);
+
+ const contents = await getContents(session, user, fromWeek, toWeek);
+ if (!contents) {
+ return null;
+ }
+
+ const result = [];
+
+ for (const lesson of contents.lessons) {
+ if (lesson.from < from || lesson.to > to) {
+ continue;
+ }
+
+ const content = lesson.content[0]; // Maybe on some instances there will be multiple entries ? Check this
+ if (typeof content === 'undefined') {
+ continue;
+ }
+ result.push(withId({
+ subject: lesson.subject.name,
+ teachers: lesson.teachers.map(t => t.name),
+ from: lesson.from,
+ to: lesson.to,
+ color: lesson.color,
+ title: content.name,
+ description: fromHTML(content.description),
+ htmlDescription: content.htmlDescription,
+ files: content.files.map(f => withId({ name: f.name, url: getFileURL(session, f) }, ['name'])),
+ category: content.category.name
+ }, ['subject', 'from', 'to']));
+ }
+
+ return checkDuplicates(result).sort((a, b) => a.from - b.from);
+}
+
+module.exports = contents;