export function handleError()

in source/packages/services/device-patcher/src/utils/errors.ts [26:56]


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

    if (
        e.message.startsWith('MISSING_REQUIRED') ||
        e.message === 'FAILED_VALIDATION' ||
        e.message === 'UNSUPPORTED_TRANSITION' ||
        e.message === 'UNSUPPORTED_PATCH_STATUS' ||
        e.message === 'BAD_REQUEST' ||
        (e.hasOwnProperty('code') && e['code'] === 'ValidationException')
    ) {
        res.status(400).json({ error: res.statusMessage }).end();
    } else if (e.name === 'ArgumentError') {
        // ow input validation error
        res.status(400).json({ error: res.statusMessage }).end();
    } else if (e.message.endsWith('NOT_FOUND')) {
        res.status(404).json({ error: 'Item not found' }).end();
    } else if (e.name === 'ResourceNotFoundException') {
        res.status(404).json({ error: res.statusMessage }).end();
    } else if (e.name === 'ConditionalCheckFailedException' || e.message === 'CONFLICT') {
        res.status(409).json({ error: 'Item already exists' }).end();
    } else if (e.message === 'DEVICE_NOT_ACTIVATED_AS_HYBRID_INSTANCE') {
        res.status(409).json({ error: res.statusMessage });
    } else if (e.hasOwnProperty('code') && ERRORS_429.includes(e['code'])) {
        res.status(429).end();
    } else {
        res.status(500).json({ error: res.statusMessage }).end();
    }

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