AbstractResponseTransformer   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 58
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 4
lcom 0
cbo 1
dl 0
loc 58
ccs 9
cts 9
cp 1
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A getModelClasses() 0 21 1
A getModelClassForResource() 0 8 2
1
<?php
2
3
/*
4
 * This file is part of the zibios/wrike-php-jmsserializer package.
5
 *
6
 * (c) Zbigniew Ślązak
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Zibios\WrikePhpJmsserializer\Transformer\Response;
13
14
use JMS\Serializer\SerializerInterface;
15
use Zibios\WrikePhpJmsserializer\Model\Account\AccountResponseModel;
16
use Zibios\WrikePhpJmsserializer\Model\Attachment\AttachmentResponseModel;
17
use Zibios\WrikePhpJmsserializer\Model\Color\ColorResponseModel;
18
use Zibios\WrikePhpJmsserializer\Model\Comment\CommentResponseModel;
19
use Zibios\WrikePhpJmsserializer\Model\Contact\ContactResponseModel;
20
use Zibios\WrikePhpJmsserializer\Model\CustomField\CustomFieldResponseModel;
21
use Zibios\WrikePhpJmsserializer\Model\Dependency\DependencyResponseModel;
22
use Zibios\WrikePhpJmsserializer\Model\Folder\FolderResponseModel;
23
use Zibios\WrikePhpJmsserializer\Model\Group\GroupResponseModel;
24
use Zibios\WrikePhpJmsserializer\Model\Id\IdResponseModel;
25
use Zibios\WrikePhpJmsserializer\Model\Invitation\InvitationResponseModel;
26
use Zibios\WrikePhpJmsserializer\Model\Task\TaskResponseModel;
27
use Zibios\WrikePhpJmsserializer\Model\Timelog\TimelogResponseModel;
28
use Zibios\WrikePhpJmsserializer\Model\User\UserResponseModel;
29
use Zibios\WrikePhpJmsserializer\Model\Version\VersionResponseModel;
30
use Zibios\WrikePhpJmsserializer\Model\Workflow\WorkflowResponseModel;
31
use Zibios\WrikePhpLibrary\Resource\AccountResource;
32
use Zibios\WrikePhpLibrary\Resource\AttachmentResource;
33
use Zibios\WrikePhpLibrary\Resource\ColorResource;
34
use Zibios\WrikePhpLibrary\Resource\CommentResource;
35
use Zibios\WrikePhpLibrary\Resource\ContactResource;
36
use Zibios\WrikePhpLibrary\Resource\CustomFieldResource;
37
use Zibios\WrikePhpLibrary\Resource\DependencyResource;
38
use Zibios\WrikePhpLibrary\Resource\FolderResource;
39
use Zibios\WrikePhpLibrary\Resource\GroupResource;
40
use Zibios\WrikePhpLibrary\Resource\IdResource;
41
use Zibios\WrikePhpLibrary\Resource\InvitationResource;
42
use Zibios\WrikePhpLibrary\Resource\TaskResource;
43
use Zibios\WrikePhpLibrary\Resource\TimelogResource;
44
use Zibios\WrikePhpLibrary\Resource\UserResource;
45
use Zibios\WrikePhpLibrary\Resource\VersionResource;
46
use Zibios\WrikePhpLibrary\Resource\WorkflowResource;
47
use Zibios\WrikePhpLibrary\Transformer\Response\Psr\AbstractPsrResponseTransformer as BaseAbstractResponseTransformer;
48
49
/**
50
 * Response Transformer Abstract.
51
 *
52
 * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
53
 */
54
abstract class AbstractResponseTransformer extends BaseAbstractResponseTransformer
55
{
56
    /**
57
     * @var SerializerInterface
58
     */
59
    protected $serializer;
60
61
    /**
62
     * AbstractResponseTransformer constructor.
63
     *
64
     * @param SerializerInterface $serializer
65
     */
66 46
    public function __construct(SerializerInterface $serializer)
67
    {
68 46
        $this->serializer = $serializer;
69 46
    }
70
71
    /**
72
     * @return array
73
     */
74 38
    protected function getModelClasses()
75
    {
76
        return [
77 38
            AccountResource::class => AccountResponseModel::class,
78
            AttachmentResource::class => AttachmentResponseModel::class,
79
            ColorResource::class => ColorResponseModel::class,
80
            CommentResource::class => CommentResponseModel::class,
81
            ContactResource::class => ContactResponseModel::class,
82
            CustomFieldResource::class => CustomFieldResponseModel::class,
83
            DependencyResource::class => DependencyResponseModel::class,
84
            FolderResource::class => FolderResponseModel::class,
85
            GroupResource::class => GroupResponseModel::class,
86
            IdResource::class => IdResponseModel::class,
87
            InvitationResource::class => InvitationResponseModel::class,
88
            TaskResource::class => TaskResponseModel::class,
89
            TimelogResource::class => TimelogResponseModel::class,
90
            UserResource::class => UserResponseModel::class,
91
            VersionResource::class => VersionResponseModel::class,
92
            WorkflowResource::class => WorkflowResponseModel::class,
93
        ];
94
    }
95
96
    /**
97
     * @param string $resourceClass
98
     *
99
     * @throws \InvalidArgumentException
100
     *
101
     * @return string
102
     */
103 38
    protected function getModelClassForResource($resourceClass)
104
    {
105 38
        if (false === array_key_exists($resourceClass, $this->getModelClasses())) {
106 4
            throw new \InvalidArgumentException(sprintf('"%s" class not supported', $resourceClass));
107
        }
108
109 34
        return $this->getModelClasses()[$resourceClass];
110
    }
111
}
112