You are here

class Discovery in RESTful 7.2

Class Discovery @package Drupal\restful_example\Plugin\Resource

Plugin annotation


@Resource(
  name = "discovery:1.0",
  resource = "discovery",
  label = "Discovery",
  description = "Discovery plugin.",
  authenticationTypes = TRUE,
  authenticationOptional = TRUE,
  discoverable = FALSE,
  dataProvider = {
    "idField": "name"
  },
  menuItem = "",
  majorVersion = 1,
  minorVersion = 0
)

Hierarchy

Expanded class hierarchy of Discovery

1 string reference to 'Discovery'
RestfulDiscoveryTestCase::getInfo in tests/RestfulDiscoveryTestCase.test

File

src/Plugin/resource/Discovery.php, line 33
Contains \Drupal\restful\Plugin\resource\Discovery

Namespace

Drupal\restful\Plugin\resource
View source
class Discovery extends Resource {

  /**
   * {@inheritdoc}
   */
  protected function publicFields() {
    return array(
      'label' => array(
        'property' => 'label',
      ),
      'description' => array(
        'property' => 'description',
      ),
      'name' => array(
        'property' => 'name',
      ),
      'resource' => array(
        'property' => 'resource',
      ),
      'majorVersion' => array(
        'property' => 'majorVersion',
      ),
      'minorVersion' => array(
        'property' => 'minorVersion',
      ),
      'self' => array(
        'callback' => array(
          $this,
          'getSelf',
        ),
      ),
    );
  }

  /**
   * {@inheritdoc}
   */
  protected function dataProviderClassName() {
    return '\\Drupal\\restful\\Plugin\\resource\\DataProvider\\DataProviderPlug';
  }

  /**
   * Returns the URL to the endpoint result.
   *
   * @param DataInterpreterInterface $interpreter
   *   The plugin's data interpreter.
   *
   * @return string
   *   The RESTful endpoint URL.
   */
  public function getSelf(DataInterpreterInterface $interpreter) {
    if ($menu_item = $interpreter
      ->getWrapper()
      ->get('menuItem')) {
      $url = variable_get('restful_hook_menu_base_path', 'api') . '/' . $menu_item;
      return url($url, array(
        'absolute' => TRUE,
      ));
    }
    $base_path = variable_get('restful_hook_menu_base_path', 'api');
    return url($base_path . '/v' . $interpreter
      ->getWrapper()
      ->get('majorVersion') . '.' . $interpreter
      ->getWrapper()
      ->get('minorVersion') . '/' . $interpreter
      ->getWrapper()
      ->get('resource'), array(
      'absolute' => TRUE,
    ));
  }

  /**
   * @inheritDoc
   */
  public function controllersInfo() {
    return array(
      '' => array(
        // GET returns a list of entities.
        RequestInterface::METHOD_GET => 'index',
        RequestInterface::METHOD_HEAD => 'index',
      ),
      // We don't know what the ID looks like, assume that everything is the ID.
      '^.*$' => array(
        RequestInterface::METHOD_GET => 'view',
        RequestInterface::METHOD_HEAD => 'view',
        RequestInterface::METHOD_PUT => array(
          'callback' => 'replace',
          'access callback' => 'resourceManipulationAccess',
        ),
        RequestInterface::METHOD_DELETE => array(
          'callback' => 'remove',
          'access callback' => 'resourceManipulationAccess',
        ),
      ),
    );
  }

  /**
   * Helper callback to check authorization for write operations.
   *
   * @param string $path
   *   The resource path.
   *
   * @return bool
   *   TRUE to grant access. FALSE otherwise.
   */
  public function resourceManipulationAccess($path) {
    return user_access('administer restful resources', $this
      ->getAccount());
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ConfigurablePluginTrait::$instanceConfiguration protected property Plugin instance configuration.
ConfigurablePluginTrait::calculateDependencies public function
ConfigurablePluginTrait::getConfiguration public function
ConfigurablePluginTrait::setConfiguration public function
Discovery::controllersInfo public function @inheritDoc Overrides Resource::controllersInfo
Discovery::dataProviderClassName protected function Data provider class. Overrides Resource::dataProviderClassName
Discovery::getSelf public function Returns the URL to the endpoint result.
Discovery::publicFields protected function Public fields. Overrides Resource::publicFields
Discovery::resourceManipulationAccess public function Helper callback to check authorization for write operations.
Resource::$authenticationManager protected property The authentication manager.
Resource::$dataProvider protected property The data provider.
Resource::$enabled protected property Indicates if the resource is enabled.
Resource::$fieldDefinitions protected property The field definition object.
Resource::$path protected property The requested path.
Resource::$request protected property The current request.
Resource::access public function Determine if user can access the handler. Overrides ResourceInterface::access 1
Resource::accessByAllowOrigin protected function Checks access based on the referer header and the allowOrigin setting.
Resource::create public function Basic implementation for create. Overrides ResourceInterface::create
Resource::dataProviderFactory public function Data provider factory. Overrides ResourceInterface::dataProviderFactory 1
Resource::defaultConfiguration public function Overrides ConfigurablePluginTrait::defaultConfiguration
Resource::disable public function Disable the resource. Overrides ResourceInterface::disable
Resource::discover public function Discovery controller callback. Overrides ResourceInterface::discover
Resource::doDelete public function Shorthand method to perform a quick DELETE request. Overrides ResourceInterface::doDelete
Resource::doGet public function Shorthand method to perform a quick GET request. Overrides ResourceInterface::doGet
Resource::doPatch public function Shorthand method to perform a quick PATCH request. Overrides ResourceInterface::doPatch
Resource::doPost public function Shorthand method to perform a quick POST request. Overrides ResourceInterface::doPost
Resource::doPut public function Shorthand method to perform a quick PUT request. Overrides ResourceInterface::doPut
Resource::doWrite private function
Resource::enable public function Enable the resource. Overrides ResourceInterface::enable
Resource::getAccount public function Get the user from for request. Overrides ResourceInterface::getAccount
Resource::getControllerFromPath public function Return the controller for a given path. Overrides ResourceInterface::getControllerFromPath
Resource::getControllers public function Gets the controllers for this resource. Overrides ResourceInterface::getControllers
Resource::getDataProvider public function Gets the data provider. Overrides ResourceInterface::getDataProvider
Resource::getFieldDefinitions public function Gets the field definitions. Overrides ResourceInterface::getFieldDefinitions
Resource::getPath public function Gets the path of the resource. Overrides ResourceInterface::getPath
Resource::getRequest public function Get the request object. Overrides ResourceInterface::getRequest
Resource::getResourceMachineName public function Gets the resource machine name. Overrides ResourceInterface::getResourceMachineName
Resource::getResourceName public function Gets the resource name. Overrides ResourceInterface::getResourceName
Resource::getUrl public function Helper method; Get the URL of the resource and query strings. Overrides ResourceInterface::getUrl
Resource::getVersion public function Return array keyed with the major and minor version of the resource. Overrides ResourceInterface::getVersion
Resource::index public function Basic implementation for listing. Overrides ResourceInterface::index 1
Resource::initAuthenticationManager protected function Initializes the authentication manager and adds the appropriate providers.
Resource::isEnabled public function Checks if the resource is enabled. Overrides ResourceInterface::isEnabled
Resource::preflight protected function Adds the Allowed-Origin headers.
Resource::process public function Controller function that passes the data along and executes right action. Overrides ResourceInterface::process
Resource::processPublicFields protected function Get the public fields with the default values applied to them. 2
Resource::remove public function Basic implementation for update. Overrides ResourceInterface::remove
Resource::replace public function Basic implementation for update. Overrides ResourceInterface::replace
Resource::setAccount public function Overrides ResourceInterface::setAccount
Resource::setDataProvider public function Sets the data provider. Overrides ResourceInterface::setDataProvider
Resource::setFieldDefinitions public function Sets the field definitions. Overrides ResourceInterface::setFieldDefinitions
Resource::setPath public function Sets the path of the resource. Overrides ResourceInterface::setPath
Resource::setPluginDefinition public function Sets the plugin definition to the provided array. Overrides ResourceInterface::setPluginDefinition
Resource::setRequest public function Sets the request object. Overrides ResourceInterface::setRequest
Resource::switchUserBack public function Switches the user back from the original user for the session. Overrides ResourceInterface::switchUserBack 1
Resource::update public function Basic implementation for update. Overrides ResourceInterface::update
Resource::versionedUrl public function Gets a resource URL based on the current version. Overrides ResourceInterface::versionedUrl
Resource::view public function Basic implementation for view. Overrides ResourceInterface::view
Resource::__construct public function Constructs a Drupal\Component\Plugin\PluginBase object. 1
ResourceInterface::IDS_SEPARATOR constant The string that separates multiple ids.