/** * @param Method $method * @param string $endpoint * * @return RpcApiDoc */ protected function processMethod(Method $method, $endpoint) { /** @var string[] $views */ $views = $method->getContext(); if ($method->includeDefaultContext()) { $views[] = 'Default'; } $views[] = 'default'; $request = new Request($method, [], new ParameterBag(['_controller' => $method->getController()])); /** @var array $controller */ $controller = $this->resolver->getController($request); $refl = new \ReflectionMethod($controller[0], $controller[1]); /** @var RpcApiDoc $methodDoc */ $methodDoc = $this->reader->getMethodAnnotation($refl, RpcApiDoc::class); if (null === $methodDoc) { $methodDoc = new RpcApiDoc(['resource' => $endpoint]); } $methodDoc = clone $methodDoc; $methodDoc->setEndpoint($endpoint); $methodDoc->setRpcMethod($method); if (null === $methodDoc->getSection()) { $methodDoc->setSection($endpoint); } foreach ($views as $view) { $methodDoc->addView($view); } $route = new Route($endpoint); $route->setMethods([$endpoint]); $route->setDefault('_controller', get_class($controller[0]) . '::' . $controller[1]); $methodDoc->setRoute($route); return $methodDoc; }