skola24-node
Version:
Library that provides convenient access to the Skola24 API.
59 lines • 2.4 kB
JavaScript
;
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