From b46d3e74d6be94718c3a3df7899dbb6af0b4a407 Mon Sep 17 00:00:00 2001 From: Girish Ramakrishnan Date: Thu, 23 Apr 2020 12:07:45 -0700 Subject: [PATCH] Fix crash in cloudflare error handling --- src/dns/cloudflare.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/dns/cloudflare.js b/src/dns/cloudflare.js index 6167aee5b..ac5740420 100644 --- a/src/dns/cloudflare.js +++ b/src/dns/cloudflare.js @@ -39,9 +39,14 @@ function translateRequestError(result, callback) { if (result.statusCode === 404) return callback(new BoxError(BoxError.NOT_FOUND, util.format('%s %j', result.statusCode, 'API does not exist'))); if (result.statusCode === 422) return callback(new BoxError(BoxError.BAD_FIELD, result.body.message)); - if ((result.statusCode === 400 || result.statusCode === 401 || result.statusCode === 403) && result.body.errors.length > 0) { - let error = result.body.errors[0]; - let message = `message: ${error.message} statusCode: ${result.statusCode} code:${error.code}`; + if (result.statusCode === 400 || result.statusCode === 401 || result.statusCode === 403) { + let message = 'Unknown error'; + if (typeof result.body.error === 'string') { + message = `message: ${result.body.error} statusCode: ${result.statusCode}`; + } else if (Array.isArray(result.body.errors) && result.body.errors.length > 0) { + let error = result.body.errors[0]; + message = `message: ${error.message} statusCode: ${result.statusCode} code:${error.code}`; + } return callback(new BoxError(BoxError.ACCESS_DENIED, message)); }