public function check_records($records) { if (!is_array($records)) { return "Zone records are not valid. Must be specified as an (empty) array."; } $errors = array(); foreach ($records as $entry) { $record = new RecordValidator($entry); if (!empty($this->mode_override)) { $record->mode = $this->mode_override; } if (!$record->validates()) { $errors[] = $record->getFormattedErrors(); } } if (!empty($errors)) { array_unshift($errors, "Zone records are not valid. The following errors occurred: "); return implode("\n", $errors); } else { return true; } }
/** * Validates a set of records. * * ### Request: ### * * ~~~ * { * entries: [ { * "name": <string>, * "type": <string>, * "content": <string>, * "ttl": <int optional>, * "priority: <int optional>, * "change_date": <int optional> * "mode": add|delete # default = add * },0..n ], * records: [ { * "name": <string>, * "type": <string>, * "content": <string>, * "ttl": <int optional>, * "priority: <int optional>, * "change_date": <int optional> * "mode": add|delete # default = add * },0..n ], * } * ~~~ * * ### Response: ### * * ~~~ * true * ~~~ * * ### Errors: ### * * * 508 - Invalid request, missing required parameters or input validation failed. * * @access public * @param mixed $request Request parameters * @return Response True if record is valid, error message with parse errors otherwise. */ public function validate($request) { $response = new FormattedResponse($request); $data = $request->parseData(); if (empty($data) || !isset($data->entries) && !isset($data->records)) { $response->code = Response::BADREQUEST; $response->error = "Request body was malformed. Ensure that all mandatory properties have been set."; $response->error_detail = "BODY_MALFORMED"; return $response; } Validator::resetCounter(); $details = array(); if (isset($data->entries) && is_array($data->entries)) { $output = array(); $i = 0; foreach ($data->entries as $d) { $i++; if (!isset($d->name) || !isset($d->type) || !isset($d->content)) { $output[] = sprintf("Missing required parameters in entry %d", $i); continue; } $validator = new RecordValidator($d); $validator->record_type = "TEMPLATE"; if (!$validator->validates()) { $output[] = sprintf("Validation errors in entry %d:", $i); $output[] = $validator->getFormattedErrors(false); $details[] = $validator->getErrorDetails(); } continue; } } if (isset($data->records) && is_array($data->records)) { $output = array(); $i = 0; foreach ($data->records as $d) { $i++; if (!isset($d->name) || !isset($d->type) || !isset($d->content)) { $output[] = sprintf("Missing required parameters in record %d", $i); continue; } $validator = new RecordValidator($d); if (!$validator->validates()) { $output[] = sprintf("Validation errors in record %d:", $i); $output[] = $validator->getFormattedErrors(false); $details[] = $validator->getErrorDetails(); } continue; } } if (empty($output)) { $response->code = Response::OK; $response->body = true; $response->log_message = "Records were successfully validated."; } else { $response->code = Response::BADREQUEST; $response->error = implode("\n", $output); $response->error_detail = $details; } return $response; }