Refactor error handling internally to follow RFC7807 (#362)

* Refactor error handling internally to follow RFC7807

* style fixes
This commit is contained in:
Nabeel S
2019-08-21 08:17:44 -04:00
committed by GitHub
parent 91a5eb535d
commit 182aabf426
25 changed files with 692 additions and 144 deletions

View File

@@ -0,0 +1,63 @@
<?php
namespace App\Exceptions\Converters;
use App\Exceptions\HttpException;
use Illuminate\Support\Facades\Log;
use Illuminate\Validation\ValidationException as IlluminateValidationException;
class ValidationException extends HttpException
{
private $validationException;
private $errorDetail;
private $errors;
public function __construct(IlluminateValidationException $validationException)
{
$this->validationException = $validationException;
$this->processValidationErrors();
parent::__construct(
400,
'Validation exception'
);
}
private function processValidationErrors()
{
$error_messages = [];
$this->errors = $this->validationException->errors();
foreach ($this->errors as $field => $error) {
$error_messages[] = implode(', ', $error);
}
$this->errorDetail = implode(', ', $error_messages);
// Log::error('Validation errors', $this->errors);
}
/**
* Return the RFC 7807 error type (without the URL root)
*/
public function getErrorType(): string
{
return 'validation-exception';
}
/**
* Return an array with the error details, merged with the RFC7807 response
*/
public function getErrorDetails(): string
{
return $this->errorDetail;
}
/**
* Return an array with the error details, merged with the RFC7807 response
*/
public function getErrorMetadata(): array
{
return [
'errors' => $this->errors,
];
}
}