Completed
Pull Request — master (#49)
by John
02:41
created

VndValidationErrorFactory   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 25
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 4

Importance

Changes 2
Bugs 0 Features 1
Metric Value
wmc 2
c 2
b 0
f 1
lcom 0
cbo 4
dl 0
loc 25
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A create() 0 12 2
1
<?php
2
/*
3
 * This file is part of the KleijnWeb\SwaggerBundle package.
4
 *
5
 * For the full copyright and license information, please view the LICENSE
6
 * file that was distributed with this source code.
7
 */
8
9
namespace KleijnWeb\SwaggerBundle\Response;
10
11
use KleijnWeb\SwaggerBundle\Exception\InvalidParametersException;
12
use Ramsey\VndError\VndError;
13
use Symfony\Component\HttpFoundation\Request;
14
15
/**
16
 * @author John Kleijn <[email protected]>
17
 */
18
class VndValidationErrorFactory
19
{
20
    const DEFAULT_MESSAGE = 'Input Validation Failure';
21
22
23
    /**
24
     * @param Request                    $request
25
     * @param InvalidParametersException $exception
26
     * @param string|null                $logRef
27
     *
28
     * @return VndError
29
     */
30
    public function create(Request $request, InvalidParametersException $exception, $logRef = null)
31
    {
32
        $vndError = new VndError(self::DEFAULT_MESSAGE, $logRef);
33
        $vndError->addLink('help', $request->attributes->get('_resource'), ['title' => 'Error Information']);
34
        $vndError->addLink('about', $request->getUri(), ['title' => 'Error Information']);
35
36
        foreach ($exception->getValidationErrors() as $errorSpec) {
37
            $vndError->addResource($errorSpec['property'], new VndError($errorSpec['message']));
38
        }
39
40
        return $vndError;
41
    }
42
}
43