Skip to content

Commit

Permalink
добавлена поддержка long polling в отчетах
Browse files Browse the repository at this point in the history
  • Loading branch information
lentryd committed Feb 25, 2024
1 parent 8c3d3d3 commit fd82191
Show file tree
Hide file tree
Showing 4 changed files with 363 additions and 81 deletions.
3 changes: 3 additions & 0 deletions docs/guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,7 @@
- `filters: { filterId: string, filterValue: string }[]` - Массив с фильтрами (форма, которая находится на странице запроса)
- `yearId?: number` - ID года, за который требуется отчет
- `timeout?: number` - Время в миллисекундах, через которое запрос будет закрыт (по умолчания `60000`, при значении `-1` запрос не будет закрываться)
- `transport?: 0 | 1` - 0 - Web Sockets, 1 - Long Polling (если отсутствует, то используется Web Sockets или Long Polling, в зависимости от версии сервера)

#### Возвращает html с результатом запроса

Expand All @@ -194,6 +195,7 @@
- `termId​?: ​number​` - ID четверти
- `​classId​?: ​number​` - ID класса
- `studentId​?: ​number​` - ID учащегося
- `transport?: 0 | 1` - 0 - Web Sockets, 1 - Long Polling (если отсутствует, то используется Web Sockets или Long Polling, в зависимости от версии сервера)

#### Возвращает объект класса [Grades](reference.md#grades)

Expand All @@ -210,6 +212,7 @@
- `termId​?: ​number​` - ID четверти
- `​classId​?: ​number​` - ID класса
- `studentId​?: ​number​` - ID учащегося
- `transport?: 0 | 1` - 0 - Web Sockets, 1 - Long Polling (если отсутствует, то используется Web Sockets или Long Polling, в зависимости от версии сервера)

#### Возвращает объект класса [Journal](reference.md#journal)

Expand Down
18 changes: 17 additions & 1 deletion src/methods/grades.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,33 @@ import {
} from "@/utils/checks";

export interface Credentials {
/** ID предмета */
subjectId: number;
/** Дата начала отчета (если `termId` не указан, либо равен `-1`, то должна быть в пределах учебного года, иначе в пределах выбранной четверти) */
start?: Date;
/** Дата окончания отчета (если `termId` не указан, либо равен `-1`, то должна быть в пределах учебного года, иначе в пределах выбранной четверти) */
end?: Date;
/** ID четверти (берется текущая четверть) */
termId?: number;
/** ID класса (обычно берется первый из массива) */
classId?: number;
/** ID студента (обычно берется первый из массива) */
studentId?: number;
/** Какой протокол использовать
*
* 0 - Web Sockets, 1 - Long Polling
*
* если отсутствует, то используется Web Sockets или Long Polling (в зависимости от версии сервера)
*/

transport?: 0 | 1;
}

export default async function grades(this: NS, credentials: Credentials) {
const { context } = await sessionValid.call(this);

let { subjectId, start, end, termId, classId, studentId } = credentials;
let { subjectId, start, end, termId, classId, studentId, transport } =
credentials;
if (!context.subjectExists(subjectId))
throw new Error(`Предмета ${subjectId} не существует`);
termId = termIdValid.call(this, termId);
Expand Down Expand Up @@ -58,6 +73,7 @@ export default async function grades(this: NS, credentials: Credentials) {
filterValue: date2JSON(start) + " - " + date2JSON(end),
},
],
transport,
}),
]);

Expand Down
16 changes: 15 additions & 1 deletion src/methods/journal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,31 @@ import {
} from "@/utils/checks";

export interface Credentials {
/** Дата начала отчета (если `termId` не указан, либо равен `-1`, то должна быть в пределах учебного года, иначе в пределах выбранной четверти) */
start?: Date;
/** Дата окончания отчета (если `termId` не указан, либо равен `-1`, то должна быть в пределах учебного года, иначе в пределах выбранной четверти) */
end?: Date;
/** ID четверти (берется текущая четверть) */
termId?: number;
/** ID класса (обычно берется первый из массива) */
classId?: number;
/** ID студента (обычно берется первый из массива) */
studentId?: number;
/** Какой протокол использовать
*
* 0 - Web Sockets, 1 - Long Polling
*
* если отсутствует, то используется Web Sockets или Long Polling (в зависимости от версии сервера)
*/

transport?: 0 | 1;
}

export default async function journal(this: NS, credentials: Credentials = {}) {
const { context } = await sessionValid.call(this);

// Проверяем параметры
let { start, end, termId, classId, studentId } = credentials;
let { start, end, termId, classId, studentId, transport } = credentials;
termId = termIdValid.call(this, termId);
classId = classIdValid.call(this, classId);
studentId = studentIdValid.call(this, studentId);
Expand Down Expand Up @@ -53,6 +66,7 @@ export default async function journal(this: NS, credentials: Credentials = {}) {
filterValue: date2JSON(start) + " - " + date2JSON(end),
},
],
transport,
});

return new Journal({
Expand Down
Loading

0 comments on commit fd82191

Please sign in to comment.