// ╔═══════╗╔═══════╗╔═══════╗╔═══════╗╔═══════╗╔═══════╗╔═══════╗ // ╚══╗ ╔══╝║ ╔╗ ╔╗ ║║ ╔═══╗ ║║ ╔═══╗ ║║ ╔═══╗ ║╚══╗ ╔══╝║ ╔═════╝ // ║ ║ ║ ║║ ║║ ║║ ╚═══╝ ║║ ║ ║ ║║ ╚═══╝ ║ ║ ║ ║ ╚═════╗ // ║ ║ ║ ║║ ║║ ║║ ╔═════╝║ ║ ║ ║║ ╔═╗ ╔═╝ ║ ║ ╚═════╗ ║ // ╔══╝ ╚══╗║ ║║ ║║ ║║ ║ ║ ╚═══╝ ║║ ║ ║ ╚═╗ ║ ║ ╔═════╝ ║ // ╚═══════╝╚═╝╚═╝╚═╝╚═╝ ╚═══════╝╚═╝ ╚═══╝ ╚═╝ ╚═══════╝ import * as requestTypings from '../../typings/request-typings.js'; import * as requestErrors from '../../errors/request-errors.js'; import * as utilityEngine from '@xyz.warpmatter.com/utility-engine'; // ╔═══════╗╔═══════╗╔════╗╔═╗╔═══════╗╔═══════╗╔════╗╔═╗╔═══════╗ // ║ ╔═════╝║ ╔═══╗ ║║ ╔╗ ║║ ║╚══╗ ╔══╝║ ╔═════╝║ ╔╗ ║║ ║╚══╗ ╔══╝ // ║ ║ ║ ║ ║ ║║ ║║ ║║ ║ ║ ║ ║ ╚═════╗║ ║║ ║║ ║ ║ ║ // ║ ║ ║ ║ ║ ║║ ║║ ║║ ║ ║ ║ ║ ╔═════╝║ ║║ ║║ ║ ║ ║ // ║ ╚═════╗║ ╚═══╝ ║║ ║║ ╚╝ ║ ║ ║ ║ ╚═════╗║ ║║ ╚╝ ║ ║ ║ // ╚═══════╝╚═══════╝╚═╝╚════╝ ╚═╝ ╚═══════╝╚═╝╚════╝ ╚═╝ export function validateRequestContent(value: any) { if (!isValidRequestContent(value)) { requestErrors.throwInvalidAbsorbLmsRequestContentError(); } } export function isValidRequestContent( value: any, ): value is requestTypings.RequestContent { return utilityEngine.isObjectLiteral(value) && isValidRequestEndpoint(value.endpoint) && (areValidRequestHeaders(value.headers) || value.headers == null) && (isValidRequestMethod(value.method) || value.method == null) && (isValidRequestBody(value.body) || value.body == null); } // ╔═══════╗╔════╗╔═╗╔═══════╗╔═══════╗╔═══════╗╔═══════╗╔════╗╔═╗╔═══════╗ // ║ ╔═════╝║ ╔╗ ║║ ║╚╗ ╔══╗ ║║ ╔═══╗ ║║ ╔═══╗ ║╚══╗ ╔══╝║ ╔╗ ║║ ║╚══╗ ╔══╝ // ║ ╚═════╗║ ║║ ║║ ║ ║ ║ ║ ║║ ╚═══╝ ║║ ║ ║ ║ ║ ║ ║ ║║ ║║ ║ ║ ║ // ║ ╔═════╝║ ║║ ║║ ║ ║ ║ ║ ║║ ╔═════╝║ ║ ║ ║ ║ ║ ║ ║║ ║║ ║ ║ ║ // ║ ╚═════╗║ ║║ ╚╝ ║╔╝ ╚══╝ ║║ ║ ║ ╚═══╝ ║╔══╝ ╚══╗║ ║║ ╚╝ ║ ║ ║ // ╚═══════╝╚═╝╚════╝╚═══════╝╚═╝ ╚═══════╝╚═══════╝╚═╝╚════╝ ╚═╝ export function validateRequestEndpoint(value: any) { if (!isValidRequestEndpoint(value)) { requestErrors.throwInvalidAbsorbLmsRequestEndpointError(); } } export function isValidRequestEndpoint( value: any, ): value is requestTypings.RequestEndpoint { return utilityEngine.isFilledString(value, 1024); } // ╔═╗ ╔═╗╔═══════╗╔═══════╗╔═══════╗╔═══════╗╔═══════╗╔═══════╗ // ║ ║ ║ ║║ ╔═════╝║ ╔═══╗ ║╚╗ ╔══╗ ║║ ╔═════╝║ ╔═══╗ ║║ ╔═════╝ // ║ ╚═══╝ ║║ ╚═════╗║ ╚═══╝ ║ ║ ║ ║ ║║ ╚═════╗║ ╚═══╝ ║║ ╚═════╗ // ║ ╔═══╗ ║║ ╔═════╝║ ╔═══╗ ║ ║ ║ ║ ║║ ╔═════╝║ ╔═╗ ╔═╝╚═════╗ ║ // ║ ║ ║ ║║ ╚═════╗║ ║ ║ ║╔╝ ╚══╝ ║║ ╚═════╗║ ║ ║ ╚═╗╔═════╝ ║ // ╚═╝ ╚═╝╚═══════╝╚═╝ ╚═╝╚═══════╝╚═══════╝╚═╝ ╚═══╝╚═══════╝ export function validateRequestHeaders(values: any) { if (!areValidRequestHeaders(values)) { requestErrors.throwInvalidAbsorbLmsRequestHeadersError(); } } export function areValidRequestHeaders( values: any, ): values is requestTypings.RequestHeaders { return utilityEngine.isObjectLiteral(values) && Object.values(values).every(isValidRequestHeader); } export function isValidRequestHeader( value: any, ): value is string { return utilityEngine.isFilledString(value, 64); } // ╔═══════╗╔═══════╗╔═══════╗╔═╗ ╔═╗╔═══════╗╔═══════╗ // ║ ╔╗ ╔╗ ║║ ╔═════╝╚══╗ ╔══╝║ ║ ║ ║║ ╔═══╗ ║╚╗ ╔══╗ ║ // ║ ║║ ║║ ║║ ╚═════╗ ║ ║ ║ ╚═══╝ ║║ ║ ║ ║ ║ ║ ║ ║ // ║ ║║ ║║ ║║ ╔═════╝ ║ ║ ║ ╔═══╗ ║║ ║ ║ ║ ║ ║ ║ ║ // ║ ║║ ║║ ║║ ╚═════╗ ║ ║ ║ ║ ║ ║║ ╚═══╝ ║╔╝ ╚══╝ ║ // ╚═╝╚═╝╚═╝╚═══════╝ ╚═╝ ╚═╝ ╚═╝╚═══════╝╚═══════╝ export function validateRequestMethod(value: any) { if (!isValidRequestMethod(value)) { requestErrors.throwInvalidAbsorbLmsRequestMethodError(); } } export function isValidRequestMethod( value: any, ): value is requestTypings.RequestMethod { return value?.toUpperCase() === 'GET' || value?.toUpperCase() === 'POST'; } // ╔══════╗ ╔═══════╗╔═══════╗╔═╗ ╔═╗ // ║ ╔══╗ ║ ║ ╔═══╗ ║╚╗ ╔══╗ ║║ ║ ║ ║ // ║ ╚══╝ ╚╗║ ║ ║ ║ ║ ║ ║ ║║ ╚═══╝ ║ // ║ ╔═══╗ ║║ ║ ║ ║ ║ ║ ║ ║╚═════╗ ║ // ║ ╚═══╝ ║║ ╚═══╝ ║╔╝ ╚══╝ ║╔═════╝ ║ // ╚═══════╝╚═══════╝╚═══════╝╚═══════╝ export function validateRequestBody(value: any) { if (!isValidRequestBody(value)) { requestErrors.throwInvalidAbsorbLmsRequestBodyError(); } } export function isValidRequestBody( value: any, ): value is requestTypings.RequestBody { return utilityEngine.isArray(value) || utilityEngine.isObjectLiteral(value); }