summaryrefslogtreecommitdiff
path: root/alarm/node_modules/pronote-api/src/fetch/homeworks.js
diff options
context:
space:
mode:
Diffstat (limited to 'alarm/node_modules/pronote-api/src/fetch/homeworks.js')
-rw-r--r--alarm/node_modules/pronote-api/src/fetch/homeworks.js45
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;