class DiscoveryController in JSON-RPC 8
Same name and namespace in other branches
- 2.x modules/jsonrpc_discovery/src/Controller/DiscoveryController.php \Drupal\jsonrpc_discovery\Controller\DiscoveryController
The controller that responds with the discovery information.
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\jsonrpc_discovery\Controller\DiscoveryController
Expanded class hierarchy of DiscoveryController
File
- modules/
jsonrpc_discovery/ src/ Controller/ DiscoveryController.php, line 21
Namespace
Drupal\jsonrpc_discovery\ControllerView source
class DiscoveryController extends ControllerBase {
/**
* The JSON-RPC handler.
*
* @var \Drupal\jsonrpc\HandlerInterface
*/
protected $handler;
/**
* The serializer service.
*
* @var \Symfony\Component\Serializer\SerializerInterface
*/
protected $serializer;
/**
* DiscoveryController constructor.
*/
public function __construct(HandlerInterface $handler, SerializerInterface $serializer) {
$this->handler = $handler;
$this->serializer = $serializer;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static($container
->get('jsonrpc.handler'), $container
->get('serializer'));
}
/**
* List the available methods.
*
* @return \Drupal\Core\Cache\CacheableJsonResponse
* The response object.
*/
public function methods() {
$cacheability = new CacheableMetadata();
$self = Url::fromRoute('jsonrpc.method_collection')
->setAbsolute()
->toString(TRUE);
$cacheability
->addCacheableDependency($self);
$methods = [
'data' => array_values($this
->getAvailableMethods($cacheability)),
'links' => [
'self' => $self
->getGeneratedUrl(),
],
];
$serialized = $this->serializer
->serialize($methods, 'json', [
AnnotationNormalizer::DEPTH_KEY => 0,
NormalizerBase::SERIALIZATION_CONTEXT_CACHEABILITY => $cacheability,
]);
return CacheableJsonResponse::fromJsonString($serialized)
->addCacheableDependency($cacheability);
}
/**
* Information about the method.
*
* @return \Drupal\Core\Cache\CacheableJsonResponse
* The response object.
*/
public function method($method_id) {
$cacheability = new CacheableMetadata();
$cacheability
->addCacheContexts([
'url.path',
]);
$methods = $this
->getAvailableMethods($cacheability);
if (!isset($methods[$method_id])) {
throw new CacheableNotFoundHttpException($cacheability, "The {$method_id} method is not available.");
}
$serialized = $this->serializer
->serialize($methods[$method_id], 'json', [
NormalizerBase::SERIALIZATION_CONTEXT_CACHEABILITY => $cacheability,
]);
return CacheableJsonResponse::fromJsonString($serialized)
->addCacheableDependency($cacheability);
}
/**
* Gets all accessible methods for the RPC handler.
*
* @param \Drupal\Core\Cache\RefinableCacheableDependencyInterface $cacheability
* The cacheability information for the current request.
*
* @return \Drupal\jsonrpc\MethodInterface[]
* The methods.
*/
protected function getAvailableMethods(RefinableCacheableDependencyInterface $cacheability) {
return array_filter($this->handler
->supportedMethods(), function (MethodInterface $method) use ($cacheability) {
$access_result = $method
->access('view', NULL, TRUE);
$cacheability
->addCacheableDependency($access_result);
return $access_result
->isAllowed();
});
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ControllerBase:: |
protected | property | The configuration factory. | |
ControllerBase:: |
protected | property | The current user service. | 1 |
ControllerBase:: |
protected | property | The entity form builder. | |
ControllerBase:: |
protected | property | The entity manager. | |
ControllerBase:: |
protected | property | The entity type manager. | |
ControllerBase:: |
protected | property | The form builder. | 2 |
ControllerBase:: |
protected | property | The key-value storage. | 1 |
ControllerBase:: |
protected | property | The language manager. | 1 |
ControllerBase:: |
protected | property | The module handler. | 2 |
ControllerBase:: |
protected | property | The state service. | |
ControllerBase:: |
protected | function | Returns the requested cache bin. | |
ControllerBase:: |
protected | function | Retrieves a configuration object. | |
ControllerBase:: |
private | function | Returns the service container. | |
ControllerBase:: |
protected | function | Returns the current user. | 1 |
ControllerBase:: |
protected | function | Retrieves the entity form builder. | |
ControllerBase:: |
protected | function | Retrieves the entity manager service. | |
ControllerBase:: |
protected | function | Retrieves the entity type manager. | |
ControllerBase:: |
protected | function | Returns the form builder service. | 2 |
ControllerBase:: |
protected | function | Returns a key/value storage collection. | 1 |
ControllerBase:: |
protected | function | Returns the language manager service. | 1 |
ControllerBase:: |
protected | function | Returns the module handler. | 2 |
ControllerBase:: |
protected | function |
Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait:: |
|
ControllerBase:: |
protected | function | Returns the state storage service. | |
DiscoveryController:: |
protected | property | The JSON-RPC handler. | |
DiscoveryController:: |
protected | property | The serializer service. | |
DiscoveryController:: |
public static | function |
Instantiates a new instance of this class. Overrides ControllerBase:: |
|
DiscoveryController:: |
protected | function | Gets all accessible methods for the RPC handler. | |
DiscoveryController:: |
public | function | Information about the method. | |
DiscoveryController:: |
public | function | List the available methods. | |
DiscoveryController:: |
public | function | DiscoveryController constructor. | |
LinkGeneratorTrait:: |
protected | property | The link generator. | 1 |
LinkGeneratorTrait:: |
protected | function | Returns the link generator. | |
LinkGeneratorTrait:: |
protected | function | Renders a link to a route given a route name and its parameters. | |
LinkGeneratorTrait:: |
public | function | Sets the link generator service. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
UrlGeneratorTrait:: |
protected | property | The url generator. | |
UrlGeneratorTrait:: |
protected | function | Returns the URL generator service. | |
UrlGeneratorTrait:: |
public | function | Sets the URL generator service. | |
UrlGeneratorTrait:: |
protected | function | Generates a URL or path for a specific route based on the given parameters. |