/ examples / assignments.ts
assignments.ts
 1  import * as pronote from "../src";
 2  import { credentials } from "./_credentials";
 3  
 4  void async function main () {
 5    const handle = pronote.createSessionHandle();
 6    await pronote.loginCredentials(handle, {
 7      url: credentials.pronoteURL,
 8      kind: pronote.AccountKind.STUDENT,
 9      username: credentials.username,
10      password: credentials.password,
11      deviceUUID: credentials.deviceUUID
12    });
13  
14    // Grab all the assignments for week 1 through week 4.
15    const assignments = await pronote.assignmentsFromWeek(handle, 1, 4);
16  
17    for (const assignment of assignments) {
18      // Output something...
19      console.log(assignment.subject.name, "to finish before the", assignment.deadline.toLocaleString());
20      console.log("(description) =>", assignment.description);
21  
22      // If there's attachments, output them too !
23      if (assignment.attachments.length > 0) {
24        assignment.attachments.forEach((attachment) => {
25          console.log("(attachment) =>", attachment.name, ":", attachment.url);
26        });
27      }
28  
29      if (assignment.return) {
30        switch (assignment.return.kind) {
31          case pronote.AssignmentReturnKind.None:
32            console.log("(return) => no return required");
33            break;
34          case pronote.AssignmentReturnKind.Paper:
35            console.log("(return) => on paper ; should be returned to teacher manually");
36            break;
37          case pronote.AssignmentReturnKind.FileUpload:
38            console.log("(return) => file upload", assignment.return.uploaded ? `(uploaded: ${assignment.return.uploaded.url})` : "(not uploaded)");
39            break;
40          case pronote.AssignmentReturnKind.Kiosk:
41            console.log("(return) => kiosk (not implemented)");
42            break;
43          case pronote.AssignmentReturnKind.AudioRecording:
44            console.log("(return) => audio recording (not implemented)");
45            break;
46        }
47      }
48  
49      if (assignment.resourceID) {
50        const resource = await pronote.resource(handle, assignment.resourceID);
51        console.log("(info) =>", resource);
52      }
53  
54      console.log(); // Linebreak.
55    }
56  }();