UNPKG

skola24-node

Version:

Library that provides convenient access to the Skola24 API.

59 lines 2.4 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Skola24Client = void 0; const axios_1 = __importDefault(require("axios")); const baseRequestConfig_1 = __importDefault(require("./utils/baseRequestConfig")); const modules_1 = require("./modules"); const Errors_1 = __importDefault(require("./error/Errors")); class Skola24Client { Config; Timetable; Services; Utilities; /** * Constructs a new instance of the client for interacting with the Skola24 API. * * @param {Skola24Config} config */ constructor(config) { this.Config = config; const createApiRequest = this.createApiRequest.bind(this); this.Timetable = new modules_1.Timetable(createApiRequest, this); this.Services = new modules_1.Services(createApiRequest, this); this.Utilities = new modules_1.Utilities(createApiRequest, this); } async executeApiRequest(url, data = {}, additionalConfig) { const config = { data: data, url: url, ...additionalConfig, ...(0, baseRequestConfig_1.default)(), }; const response = await axios_1.default.create(config).request(config); if (response.status < 200 || response.status > 200) // Skola24 always returns 200 but if for some reason it doesn't... { throw new Error(JSON.stringify(response.data)); } if (response.data.validation?.length > 0) { throw new Errors_1.default.ValidationError(response.data.validation, data, url); } if (response.data.exception != null) { throw new Errors_1.default.ExceptionError(response.data.exception, data, url); } const validationErrors = response.data.data.validationErrors; if (validationErrors) { throw new Errors_1.default.GetTimetableViewerUnitsValidationErrorsError(validationErrors, data, url); } return response.data.data; } createApiRequest = (url) => { return async (data, additionalConfig) => { return this.executeApiRequest(url, data, additionalConfig); }; }; } exports.Skola24Client = Skola24Client; //# sourceMappingURL=Skola24Client.js.map