Code Duplication    Length = 32-32 lines in 2 locations

php/Controllers/GenericEntityInvokeController.php 1 location

@@ 83-114 (lines=32) @@
80
        $this->denyAccessAttribute = $options['deny-access-attribute'];
81
    }
82
83
    public function invokeEntityMethod(Request $request, string $entityId): Response
84
    {
85
        /** @var object|null $entity */
86
        $entity = $this->controllerHelper->findEntity($this->entityClass, $entityId);
87
88
        if (is_null($entity)) {
89
            throw new InvalidArgumentException(sprintf(
90
                "Entity with id '%s' not found!",
91
                $entityId
92
            ));
93
        }
94
95
        if (!empty($this->denyAccessAttribute)) {
96
            $this->controllerHelper->denyAccessUnlessGranted($this->denyAccessAttribute, $entity);
97
        }
98
99
        $reflectionObject = new ReflectionObject($entity);
100
101
        /** @var ReflectionMethod $reflectionMethod */
102
        $reflectionMethod = $reflectionObject->getMethod($this->methodName);
103
104
        /** @var array $callArguments */
105
        $callArguments = $this->argumentCompiler->buildCallArguments(
106
            $reflectionMethod,
107
            $this->arguments,
108
            $request
109
        );
110
111
        $reflectionMethod->invokeArgs($entity, $callArguments);
112
113
        return new Response("Entity method invoked!");
114
    }
115
116
}
117

php/Controllers/GenericServiceInvokeController.php 1 location

@@ 87-118 (lines=32) @@
84
        $this->authorizationAttribute = $options['authorization-attributes'];
85
    }
86
87
    public function callService(Request $request): Response
88
    {
89
        if (!is_null($this->authorizationAttribute)) {
90
            $this->controllerHelper->denyAccessUnlessGranted($this->authorizationAttribute, $request);
91
        }
92
93
        /** @var object|null $service */
94
        $service = $this->container->get($this->serviceId);
95
96
        if (is_null($service)) {
97
            throw new ErrorException(sprintf(
98
                "Could not find service '%s'!",
99
                $this->serviceId
100
            ));
101
        }
102
103
        $reflectionObject = new ReflectionObject($service);
104
105
        /** @var ReflectionMethod $reflectionMethod */
106
        $reflectionMethod = $reflectionObject->getMethod($this->method);
107
108
        /** @var array $arguments */
109
        $arguments = $this->argumentCompiler->buildCallArguments(
110
            $reflectionMethod,
111
            $this->arguments,
112
            $request
113
        );
114
115
        $reflectionMethod->invokeArgs($service, $arguments);
116
117
        return new Response("Service call completed");
118
    }
119
120
}
121