@heknon/node-webtop
Version:
A Backend for an unofficial WebTop (SmartSchool - Israel) API.
35 lines (27 loc) • 1.35 kB
text/typescript
import { load as cheerioLoad } from 'cheerio';
import { isStringNumber, extractDateFromString, extractSchoolHoursFromString, extractClassesFromString } from '../utils';
import { Test } from './DataObjects';
import { Lesson } from '../DataObjects';
export const constructTestsLeft = (html: string): Test[] => {
const $ = cheerioLoad(html);
const examsHtml = $('#examsData > tr');
const tests = Array<Test>();
examsHtml.each((examNum, examHtml) => {
const test = {} as Test;
const studyGroupsStr = $(examHtml.children[4]).text();
const studyGroups = studyGroupsStr.match(/([^,]+)/g)!;
const room = $(examHtml.children[5]).text();
test.date = extractDateFromString($(examHtml.children[0]).text());
test.schoolHours = extractSchoolHoursFromString($(examHtml.children[1]).text());
test.name = $(examHtml.children[2]).text();
test.type = $(examHtml.children[3]).text();
test.subject = {
teacherName: studyGroups[0],
subjectName: studyGroups[1].trimLeft(),
} as Lesson;
test.classesWithTest = extractClassesFromString(studyGroups[2]);
if (room.trim() !== '') test.room = isStringNumber(room) ? Number.parseInt(room) : room;
tests.push(test);
});
return tests;
}