Passed
Push — master ( f8044c...6aa085 )
by Alexander
03:26
created

ErrorFactory   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
dl 0
loc 37
ccs 7
cts 7
cp 1
rs 10
c 0
b 0
f 0
wmc 4
lcom 1
cbo 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A make() 0 8 3
1
<?php
2
3
namespace Flugg\Responder;
4
5
use Flugg\Responder\Contracts\ErrorFactory as ErrorFactoryContract;
6
use Flugg\Responder\Contracts\ErrorMessageResolver as ErrorMessageResolverContract;
7
use Flugg\Responder\Contracts\ErrorSerializer;
8
use Flugg\Responder\Contracts\ErrorSerializer as ErrorSerializerContract;
9
10
/**
11
 * A factory class responsible for creating error arrays.
12
 *
13
 * @package flugger/laravel-responder
14
 * @author  Alexander Tømmerås <[email protected]>
15
 * @license The MIT License
16
 */
17
class ErrorFactory implements ErrorFactoryContract
18
{
19
    /**
20
     * A resolver for resolving messages from error codes.
21
     *
22
     * @var \Flugg\Responder\Contracts\ErrorMessageResolver
23
     */
24
    protected $messageResolver;
25
26
    /**
27
     * Construct the factory class.
28
     *
29
     * @param \Flugg\Responder\Contracts\ErrorMessageResolver $messageResolver
30
     */
31 3
    public function __construct(ErrorMessageResolverContract $messageResolver)
32
    {
33 3
        $this->messageResolver = $messageResolver;
34 3
    }
35
36
    /**
37
     * Make an error array from the given error code and message.
38
     *
39
     * @param  \Flugg\Responder\Contracts\ErrorSerializer $serializer
40
     * @param  string|null                                $errorCode
41
     * @param  string|null                                $message
42
     * @param  array|null                                 $data
43
     * @return array
44
     */
45 3
    public function make(ErrorSerializer $serializer, string $errorCode = null, string $message = null, array $data = null): array
46
    {
47 3
        if (isset($errorCode) && ! isset($message)) {
48 1
            $message = $this->messageResolver->resolve($errorCode);
49
        }
50
51 3
        return $serializer->format($errorCode, $message, $data);
52
    }
53
}