diff options
Diffstat (limited to 'alarm/node_modules/pronote-api/src/fetch/contents.js')
-rw-r--r-- | alarm/node_modules/pronote-api/src/fetch/contents.js | 51 |
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; |