export function handleError()

in source/packages/services/organization-manager/src/utils/errors.ts [26:65]


export function handleError(e: ErrorWithResponse, res: Response): void {
    logger.error(`handleError: ${e}`);

    let message = res.statusMessage;
    const code = e.code;
    let status;
    if (e.response !== undefined) {
        status = e.response.status;
        const json = JSON.parse(e.response.text);
        if (json['error']) {
            message = json['error'];
        }
    }

    if (status === 400) {
        res.status(400).json({ error: message }).end();
    } else if (
        e.name === 'ArgumentError' || // ow input validation error
        e.message === 'FAILED_VALIDATION' ||
        e.message === 'STATUS_PENDING' ||
        e.message === 'INVALID_RELATION'
    ) {
        res.status(400).json({ error: res.statusMessage }).end();
    } else if (status === 404 || e.message === 'NOT_FOUND') {
        res.status(404).json({ error: 'Resource does not exist' }).end();
    } else if (e.message === 'Organizational Unit exists') {
        res.status(409).json({ error: res.statusMessage }).end();
    } else if (status === 409 || code === 'DuplicateOrganizationalUnitException') {
        res.status(409).json({ error: message }).end();
    } else if (e.hasOwnProperty('code') && ERRORS_429.includes(e['code'])) {
        res.status(429).end();
    } else {
        // NO_PROVISIONING_TEMPLATE_CONFIGURED
        // NO_ROOT_CA_CONFIGURED
        // NO_ROOT_CA_CERTIFICATE_PEM
        res.status(500).json({ error: message }).end();
    }

    logger.error(`handleError: res.status: ${res.status}`);
}