zdu-student-api 1.1.5 → 1.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +242 -18
  3. package/dist/audience.d.ts +44 -44
  4. package/dist/audience.js +50 -48
  5. package/dist/cabinet/cabinet.d.ts +79 -0
  6. package/dist/cabinet/cabinet.js +162 -0
  7. package/dist/cabinet/data.d.ts +66 -0
  8. package/dist/cabinet/data.js +115 -0
  9. package/dist/cabinet/disciplines.d.ts +19 -0
  10. package/dist/cabinet/disciplines.js +87 -0
  11. package/dist/cabinet/index.d.ts +3 -2
  12. package/dist/cabinet/index.js +3 -2
  13. package/dist/cabinet/parsers.d.ts +37 -0
  14. package/dist/cabinet/parsers.js +284 -0
  15. package/dist/cabinet/scores.d.ts +12 -0
  16. package/dist/cabinet/scores.js +101 -0
  17. package/dist/cabinet/sesId.d.ts +10 -9
  18. package/dist/cabinet/sesId.js +40 -39
  19. package/dist/cabinet/session.d.ts +33 -0
  20. package/dist/cabinet/session.js +99 -0
  21. package/dist/cabinet/types.d.ts +2 -2
  22. package/dist/cabinet/utils.d.ts +8 -0
  23. package/dist/cabinet/utils.js +19 -0
  24. package/dist/cabinet/validSession.d.ts +8 -0
  25. package/dist/cabinet/validSession.js +29 -0
  26. package/dist/cabinetStudent/cabinetStudent.d.ts +87 -0
  27. package/dist/cabinetStudent/cabinetStudent.js +181 -0
  28. package/dist/cabinetStudent/disciplines.d.ts +19 -0
  29. package/dist/cabinetStudent/disciplines.js +86 -0
  30. package/dist/cabinetStudent/index.d.ts +4 -0
  31. package/dist/cabinetStudent/index.js +4 -0
  32. package/dist/cabinetStudent/scores.d.ts +12 -0
  33. package/dist/cabinetStudent/scores.js +101 -0
  34. package/dist/cabinetStudent/types.d.ts +137 -0
  35. package/dist/cabinetStudent/types.js +1 -0
  36. package/dist/cabinetTeacher/academicGroups.d.ts +10 -0
  37. package/dist/cabinetTeacher/academicGroups.js +36 -0
  38. package/dist/cabinetTeacher/cabinetTeacher.d.ts +71 -0
  39. package/dist/cabinetTeacher/cabinetTeacher.js +132 -0
  40. package/dist/cabinetTeacher/index.d.ts +3 -0
  41. package/dist/cabinetTeacher/index.js +3 -0
  42. package/dist/cabinetTeacher/types.d.ts +68 -0
  43. package/dist/cabinetTeacher/types.js +1 -0
  44. package/dist/constants.d.ts +49 -49
  45. package/dist/constants.js +55 -52
  46. package/dist/examples.d.ts +1 -1
  47. package/dist/examples.js +70 -15
  48. package/dist/index.d.ts +12 -10
  49. package/dist/index.js +12 -10
  50. package/dist/schedule.d.ts +62 -62
  51. package/dist/schedule.js +74 -68
  52. package/dist/types.d.ts +17 -16
  53. package/dist/types.js +0 -1
  54. package/package.json +35 -33
package/dist/constants.js CHANGED
@@ -1,26 +1,29 @@
1
1
  /**
2
- * Список факультетів університету.
3
- * @category Schedule
4
- *
5
- * @remarks
6
- * - `none`: { id: 0, name: 'Оберіть факультет' }
7
- * - `physicsMath`: { id: 1001, name: 'Фізико-математичний факультет' }
8
- * - `philologyJournalism`: { id: 1002, name: 'Навчально-науковий інститут філології та журналістики' }
9
- * - `historyLawPublic`: { id: 1003, name: 'Факультет історії, права та публічного управління' }
10
- * - `foreignPhilology`: { id: 1004, name: 'Навчально-науковий інститут іноземної філології' }
11
- * - `natural`: { id: 1005, name: 'Природничий факультет' }
12
- * - `pedagogy`: { id: 1006, name: 'Навчально-науковий інститут педагогіки' }
13
- * - `socialPsychology`: { id: 1007, name: 'Соціально-психологічний факультет' }
14
- * - `physicalEducation`: { id: 1008, name: 'Факультет фізичного виховання і спорту' }
15
- * - `preUniversityCenter`: { id: 1009, name: 'Центр доуніверситетської освіти та освіти дорослих' }
16
- * - `partTime`: { id: 1010, name: 'Заочна форма навчання' }
17
- * - `postgraduate`: { id: 1011, name: 'Відділ аспірантури та докторантури' }
18
- * - `scientificLyceum`: { id: 1012, name: 'Науковий ліцей' }
19
- */
2
+ * Список факультетів університету.
3
+ * @category Schedule
4
+ *
5
+ * @remarks
6
+ * - `none`: { id: 0, name: 'Оберіть факультет' }
7
+ * - `physicsMath`: { id: 1001, name: 'Фізико-математичний факультет' }
8
+ * - `philologyJournalism`: { id: 1002, name: 'Навчально-науковий інститут філології та журналістики' }
9
+ * - `historyLawPublic`: { id: 1003, name: 'Факультет історії, права та публічного управління' }
10
+ * - `foreignPhilology`: { id: 1004, name: 'Навчально-науковий інститут іноземної філології' }
11
+ * - `natural`: { id: 1005, name: 'Природничий факультет' }
12
+ * - `pedagogy`: { id: 1006, name: 'Навчально-науковий інститут педагогіки' }
13
+ * - `socialPsychology`: { id: 1007, name: 'Соціально-психологічний факультет' }
14
+ * - `physicalEducation`: { id: 1008, name: 'Факультет фізичного виховання і спорту' }
15
+ * - `preUniversityCenter`: { id: 1009, name: 'Центр доуніверситетської освіти та освіти дорослих' }
16
+ * - `partTime`: { id: 1010, name: 'Заочна форма навчання' }
17
+ * - `postgraduate`: { id: 1011, name: 'Відділ аспірантури та докторантури' }
18
+ * - `scientificLyceum`: { id: 1012, name: 'Науковий ліцей' }
19
+ */
20
20
  export const faculties = {
21
21
  none: { id: 0, name: 'Оберіть факультет' },
22
22
  physicsMath: { id: 1001, name: 'Фізико-математичний факультет' },
23
- philologyJournalism: { id: 1002, name: 'Навчально-науковий інститут філології та журналістики' },
23
+ philologyJournalism: {
24
+ id: 1002,
25
+ name: 'Навчально-науковий інститут філології та журналістики',
26
+ },
24
27
  historyLawPublic: { id: 1003, name: 'Факультет історії, права та публічного управління' },
25
28
  foreignPhilology: { id: 1004, name: 'Навчально-науковий інститут іноземної філології' },
26
29
  natural: { id: 1005, name: 'Природничий факультет' },
@@ -30,31 +33,31 @@ export const faculties = {
30
33
  preUniversityCenter: { id: 1009, name: 'Центр доуніверситетської освіти та освіти дорослих' },
31
34
  partTime: { id: 1010, name: 'Заочна форма навчання' },
32
35
  postgraduate: { id: 1011, name: 'Відділ аспірантури та докторантури' },
33
- scientificLyceum: { id: 1012, name: 'Науковий ліцей' }
36
+ scientificLyceum: { id: 1012, name: 'Науковий ліцей' },
34
37
  };
35
38
  /**
36
- * Список помилок для розкладу.
37
- * @category Schedule
38
- *
39
- * @remarks
40
- * Ключі — числові коди помилок.
41
- * Значення — опис помилки.
42
- *
43
- * Коди помилок:
44
- * - -200: Не має доступу до сервера або помилка доступу до бази даних
45
- * - -100: Помилка у роботі модуля, зверніться до розробника
46
- * - -90: Об`єкт, для якого потрібно показати розклад, не знайдено
47
- * - -80: Неправильний режим (помилка у параметрі req_mode або req_type)
48
- * - -70: Помилка у датах
49
- * - -60: Помилка у параметрах
50
- * - -7: Зараз відбувається технічне обслуговування бази, робота тимчасово неможлива!
51
- * - -6: Вигрузка всього розкладу разом заборонена Адмiнiстратором
52
- * - -5: Технічні роботи на сервері
53
- * - -4: За даним запитом нічого не знайдено
54
- * - -3: Перегляд розкладу на вказані дати заблоковано адміністратором (Розклад у процесі складання і ще не готовий для демонстрації)
55
- * - -2: Перегляд розкладу заблоковано адміністратором (Розклад у процесі складання і ще не готовий для демонстрації)
56
- * - -1: Розклад у базі відсутній
57
- */
39
+ * Список помилок для розкладу.
40
+ * @category Schedule
41
+ *
42
+ * @remarks
43
+ * Ключі — числові коди помилок.
44
+ * Значення — опис помилки.
45
+ *
46
+ * Коди помилок:
47
+ * - -200: Не має доступу до сервера або помилка доступу до бази даних
48
+ * - -100: Помилка у роботі модуля, зверніться до розробника
49
+ * - -90: Об`єкт, для якого потрібно показати розклад, не знайдено
50
+ * - -80: Неправильний режим (помилка у параметрі req_mode або req_type)
51
+ * - -70: Помилка у датах
52
+ * - -60: Помилка у параметрах
53
+ * - -7: Зараз відбувається технічне обслуговування бази, робота тимчасово неможлива!
54
+ * - -6: Вигрузка всього розкладу разом заборонена Адмiнiстратором
55
+ * - -5: Технічні роботи на сервері
56
+ * - -4: За даним запитом нічого не знайдено
57
+ * - -3: Перегляд розкладу на вказані дати заблоковано адміністратором (Розклад у процесі складання і ще не готовий для демонстрації)
58
+ * - -2: Перегляд розкладу заблоковано адміністратором (Розклад у процесі складання і ще не готовий для демонстрації)
59
+ * - -1: Розклад у базі відсутній
60
+ */
58
61
  export const scheduleErrors = {
59
62
  [-200]: 'Не має доступу до сервера або помилка доступу до бази даних',
60
63
  [-100]: 'Помилка у роботі модуля, зверніться до розробника',
@@ -68,24 +71,24 @@ export const scheduleErrors = {
68
71
  [-4]: 'За даним запитом нічого не знайдено',
69
72
  [-3]: 'Перегляд розкладу на вказані дати заблоковано адміністратором (Розклад у процесі складання і ще не готовий для демонстрації)',
70
73
  [-2]: 'Перегляд розкладу заблоковано адміністратором (Розклад у процесі складання і ще не готовий для демонстрації)',
71
- [-1]: 'Розклад у базі відсутній'
74
+ [-1]: 'Розклад у базі відсутній',
72
75
  };
73
76
  /**
74
- * Тип розкладу.
75
- * @category Schedule
76
- *
77
- * @remarks
78
- * Типи: group, teacher, room.
79
- */
77
+ * Тип розкладу.
78
+ * @category Schedule
79
+ *
80
+ * @remarks
81
+ * Типи: group, teacher, room.
82
+ */
80
83
  export const scheduleTypes = {
81
84
  group: 'group',
82
85
  teacher: 'teacher',
83
86
  room: 'room',
84
87
  };
85
88
  /**
86
- * Блоки
87
- * @category Audience
88
- */
89
+ * Блоки
90
+ * @category Audience
91
+ */
89
92
  export const blocks = {
90
93
  block_1: '№1',
91
94
  block_2: '№2',
@@ -1 +1 @@
1
- export {};
1
+ import 'dotenv/config';
package/dist/examples.js CHANGED
@@ -1,5 +1,5 @@
1
- import { Audience } from "./audience.js";
2
- import { getSesId } from "./cabinet/index.js";
1
+ import 'dotenv/config';
2
+ import { CabinetTeacher } from './cabinetTeacher/cabinetTeacher.js';
3
3
  // const schedule = new Schedule();
4
4
  // schedule.group = '23Бд-СОінф123'
5
5
  // schedule.type = 'group'
@@ -24,18 +24,73 @@ import { getSesId } from "./cabinet/index.js";
24
24
  // } catch (err: any) {
25
25
  // console.error(err.message);
26
26
  // }
27
- //console.log((await getGroups('25Бд-Комп'))) // -3158
28
- // console.log((await getTeachers('Кривонос Олександр')))
29
- // console.log((await getRooms('319')))
30
- const audience = new Audience();
31
- audience.blockName = "гуртож №3";
32
- try {
33
- const audiences = await audience.getAudience();
34
- console.log("Аудиторії:", audiences);
35
- }
36
- catch (err) {
37
- console.error(err.message);
38
- }
27
+ // console.log(await getGroups('25Бд-Комп')); // -3158
28
+ // console.log(await getTeachers('Кривонос Олександр'));
29
+ // console.log(await getRooms('319'));
30
+ // const audience = new Audience();
31
+ // audience.blockName = "гуртож №3"
32
+ // try {
33
+ // const audiences = await audience.getAudience();
34
+ // console.log("Аудиторії:", audiences);
35
+ // } catch (err: any) {
36
+ // console.error(err.message);
37
+ // }
39
38
  // console.log((await getTypesAudience('Ле')));
40
39
  //console.log((await getDops()));
41
- console.log((await getSesId("FFFFF", "123456789")));
40
+ // console.log((await getSesId("FFFFF", "123456789")))
41
+ // console.log(cb.data);
42
+ // console.log(cb.disciplines);
43
+ // const { sesID, sessGUID } = await getSesId(process.env.LOGIN!, process.env.PASSWORD!);
44
+ // console.log(sesID, sessGUID);
45
+ // const sesID = '2850142C-AF52-4291-90C6-7EF356F90530';
46
+ // const sessGUID = '20225423078dcb37d97904b76ba534af';
47
+ // const data = await getData(sesID, sessGUID);
48
+ // const data = await getDisciplines(sesID, sessGUID);
49
+ // const data = await getСurrentDisciplines(sesID, sessGUID);
50
+ // console.log(data);
51
+ // const data2 = await getScores(sesID, sessGUID, '43910', 0);
52
+ // // console.log(data2);
53
+ // const me = data2.studentScores.find((s) => s.id === data2.studentId)!;
54
+ // const sesID = '894CF1B8-9FD8-4D44-A83B-FAC11182EA9C';
55
+ // const sessGUID = '558ba94ab569d8701b380dbcfcbc3a42';
56
+ // const cb = new Cabinet(process.env.LOGIN!, process.env.PASSWORD!);
57
+ // // await cb.auth();
58
+ // // console.log(cb.sesID, cb.sessGUID);
59
+ // console.log(await cb.setSession(sesID, sessGUID));
60
+ // // console.log(cb.sesID, cb.sessGUID);
61
+ // // console.log(await cb.loadData());
62
+ // console.log(await cb.getId());
63
+ // // console.log(cb.allScores);
64
+ // // printFinalScores(cb.allScores!, cb.disciplines);
65
+ // function printFinalScores(scoresArray: Scores[], disciplines: Discipline[]) {
66
+ // // Створюємо мапу prId → name для швидкого доступу
67
+ // const disciplineMap: Record<string, string> = {};
68
+ // for (const d of disciplines) {
69
+ // disciplineMap[d.prId] = d.name;
70
+ // }
71
+ // const result: Record<string, Record<string, string>> = {};
72
+ // for (const scoresObj of scoresArray) {
73
+ // const disciplineId = scoresObj.prId;
74
+ // const disciplineName = disciplineMap[disciplineId] ?? disciplineId;
75
+ // for (const student of scoresObj.studentScores) {
76
+ // if (!result[student.id]) result[student.id] = {};
77
+ // result[student.id][disciplineName] = student.finalScore;
78
+ // }
79
+ // }
80
+ // for (const studentId in result) {
81
+ // console.log(`Student ${studentId}:`);
82
+ // for (const disciplineName in result[studentId]) {
83
+ // console.log(` ${disciplineName}: ${result[studentId][disciplineName]}`);
84
+ // }
85
+ // }
86
+ // }
87
+ const sesID = '6AAB1510-0D9F-45FD-9F24-3A7B4568BAA7';
88
+ const sessGUID = 'fd09702e51cde3d1bb6bfccdf9fc9e37';
89
+ const cb = new CabinetTeacher(process.env.LOGINT, process.env.PASSWORDT);
90
+ // console.log(await cb.auth());
91
+ //console.log(cb.sesID, cb.sessGUID);
92
+ console.log(await cb.setSession(sesID, sessGUID));
93
+ console.log(cb.sesID, cb.sessGUID);
94
+ console.log(await cb.loadData());
95
+ console.log(cb.data);
96
+ console.log(cb.academicGroups);
package/dist/index.d.ts CHANGED
@@ -1,10 +1,12 @@
1
- export * from "./schedule.js";
2
- export * from "./types.js";
3
- export * from "./constants.js";
4
- export * from "./utility/groups.js";
5
- export * from "./utility/rooms.js";
6
- export * from "./utility/teachers.js";
7
- export * from "./audience.js";
8
- export * from "./utility/types-audience.js";
9
- export * from "./utility/dops.js";
10
- export * from "./cabinet/index.js";
1
+ export * from './schedule.js';
2
+ export * from './types.js';
3
+ export * from './constants.js';
4
+ export * from './utility/groups.js';
5
+ export * from './utility/rooms.js';
6
+ export * from './utility/teachers.js';
7
+ export * from './audience.js';
8
+ export * from './utility/types-audience.js';
9
+ export * from './utility/dops.js';
10
+ export * from './cabinet/index.js';
11
+ export * from './cabinetStudent/index.js';
12
+ export * from './cabinetTeacher/index.js';
package/dist/index.js CHANGED
@@ -1,10 +1,12 @@
1
- export * from "./schedule.js";
2
- export * from "./types.js";
3
- export * from "./constants.js";
4
- export * from "./utility/groups.js";
5
- export * from "./utility/rooms.js";
6
- export * from "./utility/teachers.js";
7
- export * from "./audience.js";
8
- export * from "./utility/types-audience.js";
9
- export * from "./utility/dops.js";
10
- export * from "./cabinet/index.js";
1
+ export * from './schedule.js';
2
+ export * from './types.js';
3
+ export * from './constants.js';
4
+ export * from './utility/groups.js';
5
+ export * from './utility/rooms.js';
6
+ export * from './utility/teachers.js';
7
+ export * from './audience.js';
8
+ export * from './utility/types-audience.js';
9
+ export * from './utility/dops.js';
10
+ export * from './cabinet/index.js';
11
+ export * from './cabinetStudent/index.js';
12
+ export * from './cabinetTeacher/index.js';
@@ -5,34 +5,34 @@ import { BaseLesson, DetailedLesson, Faculty, ScheduleTypes } from './types.js';
5
5
  */
6
6
  export declare class Schedule {
7
7
  /**
8
- * Тип розкладу.
9
- *
10
- * Типи: group, teacher, room.
11
- */
8
+ * Тип розкладу.
9
+ *
10
+ * Типи: group, teacher, room.
11
+ */
12
12
  type: ScheduleTypes;
13
13
  /**
14
- * Група
15
- */
14
+ * Група
15
+ */
16
16
  group: string;
17
17
  /**
18
- * Id групи
19
- */
18
+ * Id групи
19
+ */
20
20
  groupId?: number;
21
21
  /**
22
- * Викладач
23
- */
22
+ * Викладач
23
+ */
24
24
  teacher: string;
25
25
  /**
26
- * Id викладача
27
- */
26
+ * Id викладача
27
+ */
28
28
  teacherId?: number;
29
29
  /**
30
- * Аудиторія
31
- */
30
+ * Аудиторія
31
+ */
32
32
  room: string;
33
33
  /**
34
- * Id аудиторії
35
- */
34
+ * Id аудиторії
35
+ */
36
36
  roomId?: number;
37
37
  /**
38
38
  * Факультет.
@@ -47,22 +47,22 @@ export declare class Schedule {
47
47
  */
48
48
  faculty: Faculty;
49
49
  /**
50
- * Курс
51
- *
52
- * `0` - не вибрано
53
- */
50
+ * Курс
51
+ *
52
+ * `0` - не вибрано
53
+ */
54
54
  course: 0 | 1 | 2 | 3 | 4 | 5 | 6;
55
55
  /**
56
- * Початкова дата розкладу
57
- */
56
+ * Початкова дата розкладу
57
+ */
58
58
  beginDate: Date;
59
59
  /**
60
- * Кінцева дата розкладу (за промовчанням +7 днів)
61
- */
60
+ * Кінцева дата розкладу (за промовчанням +7 днів)
61
+ */
62
62
  endDate: Date;
63
63
  /**
64
- * Показувати пусті дні - false
65
- */
64
+ * Показувати пусті дні - false
65
+ */
66
66
  showEmpty: boolean;
67
67
  /**
68
68
  * false - сформований текст (за промовчанням)
@@ -76,42 +76,42 @@ export declare class Schedule {
76
76
  set rosText(value: boolean);
77
77
  get rosText(): boolean;
78
78
  /**
79
- * Повертає список пар (розклад)
80
- *
81
- * @throws {Error} Якщо виникають проблеми з запитом або дані некоректні.
82
- *
83
- * @example
84
- * ```ts
85
- * import { Schedule, scheduleErrors } from "./index.ts";
86
- * const schedule = new Schedule();
87
- * schedule.group = '23Бд-СОінф123' // встановлюєм неправильну назву групи
88
- * schedule.type = 'group' // встановлєм тип пошуку по групі
89
- * schedule.rosText = true; // встановлюєм окремі стовпчики
90
- * schedule.allStreamComponents = true; // встановлюєм повний склад потоку
91
- * try {
92
- * const mySchedule = await schedule.getSchedule();
93
- * console.log("Розклад:", mySchedule);
94
- * } catch (err: any) {
95
- * // Отримуєм помилку тому що ми неправильно вказали назву групи
96
- * console.error(err.message); // Поверне: "{"error_message":"Об‘єкт - 23Бд-СОінф123 - Об‘єкт не знайдено ","errorcode":"-90"}"
97
- * console.error(scheduleErrors[JSON.parse(err.message).errorcode]); // Поверне: "Об`єкт, для якого потрібно показати розклад, не знайдено"
98
- * }
99
- * ```
100
- *
101
- * @remarks
102
- * У `err.message` може повертатися простий текст помилки,
103
- * або об’єкт у форматі:
104
- * ```JSON
105
- * {
106
- * "error_message": "Текст помилки",
107
- * "errorcode": "Код помилки"
108
- * }
109
- * ```
110
- *
111
- * Де:
112
- * - `error_message` - текст помилки відповідно до {@link scheduleErrors}
113
- * - `errorcode` - код помилки відповідно до {@link scheduleErrors}
114
- */
79
+ * Повертає список пар (розклад)
80
+ *
81
+ * @throws {Error} Якщо виникають проблеми з запитом або дані некоректні.
82
+ *
83
+ * @example
84
+ * ```ts
85
+ * import { Schedule, scheduleErrors } from "./index.ts";
86
+ * const schedule = new Schedule();
87
+ * schedule.group = '23Бд-СОінф123' // встановлюєм неправильну назву групи
88
+ * schedule.type = 'group' // встановлєм тип пошуку по групі
89
+ * schedule.rosText = true; // встановлюєм окремі стовпчики
90
+ * schedule.allStreamComponents = true; // встановлюєм повний склад потоку
91
+ * try {
92
+ * const mySchedule = await schedule.getSchedule();
93
+ * console.log("Розклад:", mySchedule);
94
+ * } catch (err: any) {
95
+ * // Отримуєм помилку тому що ми неправильно вказали назву групи
96
+ * console.error(err.message); // Поверне: "{"error_message":"Об‘єкт - 23Бд-СОінф123 - Об‘єкт не знайдено ","errorcode":"-90"}"
97
+ * console.error(scheduleErrors[JSON.parse(err.message).errorcode]); // Поверне: "Об`єкт, для якого потрібно показати розклад, не знайдено"
98
+ * }
99
+ * ```
100
+ *
101
+ * @remarks
102
+ * У `err.message` може повертатися простий текст помилки,
103
+ * або об’єкт у форматі:
104
+ * ```JSON
105
+ * {
106
+ * "error_message": "Текст помилки",
107
+ * "errorcode": "Код помилки"
108
+ * }
109
+ * ```
110
+ *
111
+ * Де:
112
+ * - `error_message` - текст помилки відповідно до {@link scheduleErrors}
113
+ * - `errorcode` - код помилки відповідно до {@link scheduleErrors}
114
+ */
115
115
  getSchedule(): Promise<DetailedLesson[] | BaseLesson[]>;
116
116
  private encodeCP1251;
117
117
  }