cloudflare: validate response fields
This commit is contained in:
@@ -77,9 +77,16 @@ async function getZoneByName(domainConfig, zoneName) {
|
||||
const [error, response] = await safe(createRequest('GET', `${CLOUDFLARE_ENDPOINT}/zones?name=${zoneName}&status=active`, domainConfig));
|
||||
if (error) throw new BoxError(BoxError.NETWORK_ERROR, error.message);
|
||||
if (response.statusCode !== 200 || response.body.success !== true) throw translateRequestError(response);
|
||||
if (!response.body.result.length) throw new BoxError(BoxError.NOT_FOUND, util.format('%s %j', response.statusCode, response.body));
|
||||
if (!response.body.result || !response.body.result.length) throw new BoxError(BoxError.NOT_FOUND, `${response.statusCode} ${JSON.stringify(response.body)}`);
|
||||
|
||||
return response.body.result[0];
|
||||
// check 'id' and 'name_servers' exist in the response
|
||||
const zone = response.body.result[0];
|
||||
const zoneId = safe.query(zone, 'id');
|
||||
if (typeof zoneId !== 'string') throw new BoxError(BoxError.EXTERNAL_ERROR, `No zone id in response: ${response.statusCode} ${JSON.stringify(response.body)}`);
|
||||
const name_servers = safe.query(zone, 'name_servers');
|
||||
if (!Array.isArray(name_servers)) throw new BoxError(BoxError.EXTERNAL_ERROR, `name_servers is not an array: ${response.statusCode} ${JSON.stringify(response.body)}`);
|
||||
|
||||
return zone;
|
||||
}
|
||||
|
||||
// gets records filtered by zone, type and fqdn
|
||||
@@ -110,8 +117,8 @@ async function upsert(domainObject, location, type, values) {
|
||||
|
||||
debug('upsert: %s for zone %s of type %s with values %j', fqdn, zoneName, type, values);
|
||||
|
||||
const result = await getZoneByName(domainConfig, zoneName);
|
||||
const zoneId = result.id;
|
||||
const zone = await getZoneByName(domainConfig, zoneName);
|
||||
const zoneId = zone.id;
|
||||
|
||||
const records = await getDnsRecords(domainConfig, zoneId, fqdn, type);
|
||||
|
||||
@@ -223,8 +230,8 @@ async function wait(domainObject, subdomain, type, value, options) {
|
||||
|
||||
debug('wait: %s for zone %s of type %s', fqdn, zoneName, type);
|
||||
|
||||
const result = await getZoneByName(domainConfig, zoneName);
|
||||
const zoneId = result.id;
|
||||
const zone = await getZoneByName(domainConfig, zoneName);
|
||||
const zoneId = zone.id;
|
||||
|
||||
const dnsRecords = await getDnsRecords(domainConfig, zoneId, fqdn, type);
|
||||
if (dnsRecords.length === 0) throw new BoxError(BoxError.NOT_FOUND, 'Domain not found');
|
||||
|
||||
Reference in New Issue
Block a user