jfu-1.0.x-dev/src/Plugin/rest/resource/BlockListResource.php
src/Plugin/rest/resource/BlockListResource.php
<?php
namespace Drupal\jfu\Plugin\rest\resource;
use Drupal\rest\Plugin\ResourceBase;
use Drupal\rest\ResourceResponse;
use Drupal\Core\Cache\CacheableMetadata;
/**
* Provides a Block list resource
*
* @RestResource (
* id = "block_list_resource",
* label = @Translation("Block List Resource"),
* uri_paths = {
* "canonical" = "/jfu_rest_api/block_list_resource"
* }
* )
**/
class BlockListResource extends ResourceBase {
/**
* Responds to entity GET requests.
* @return \Drupal\rest\ResourceResponse
*/
public function get() {
$definitions_array = [];
$bcid = '';
$entity_type_manager = \Drupal::service('entity_type.manager');
$blockManager = \Drupal::service('plugin.manager.block');
$contextRepository = \Drupal::service('context.repository');
$definitions = $blockManager->getDefinitionsForContexts(
$contextRepository->getAvailableContexts()
);
if (!empty($definitions)) {
foreach ($definitions as $key => $value) {
$definitions_array[$key]['admin_label'] = $value['admin_label'];
}
}
//Add cache tags.
$cache_metadata = new CacheableMetadata();
$cache_metadata->addCacheTags(['block_content_list']);
//Attach the cache metadata to the response.
$response = new ResourceResponse($definitions_array);
$response->addCacheableDependency($cache_metadata);
return $response;
}
}
