diff options
Diffstat (limited to 'alarm/node_modules/pronote-api/src/fetch/homeworks.js')
-rw-r--r-- | alarm/node_modules/pronote-api/src/fetch/homeworks.js | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/alarm/node_modules/pronote-api/src/fetch/homeworks.js b/alarm/node_modules/pronote-api/src/fetch/homeworks.js new file mode 100644 index 0000000..7f2146b --- /dev/null +++ b/alarm/node_modules/pronote-api/src/fetch/homeworks.js @@ -0,0 +1,45 @@ +const { toPronoteWeek } = require('../data/dates'); +const { getFileURL } = require('../data/files'); +const fromHTML = require('../data/html'); +const { withId, checkDuplicates } = require('../data/id'); + +const getHomeworks = require('./pronote/homeworks'); + +async function homeworks(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 homeworks = await getHomeworks(session, user, fromWeek, toWeek); + if (!homeworks) { + return null; + } + + const result = []; + + for (const homework of homeworks) { + if (homework.for < from || homework.for > to) { + continue; + } + + result.push(withId({ + description: fromHTML(homework.description), + htmlDescription: homework.description, + subject: homework.subject.name, + givenAt: homework.givenAt, + for: homework.for, + done: homework.done, + color: homework.color, + files: homework.files.map(f => withId({ name: f.name, url: getFileURL(session, f) }, ['name'])) + }, 'subject', 'givenAt')); + } + + return checkDuplicates(result).sort((a, b) => a.for - b.for); +} + +module.exports = homeworks; |