annotate core/modules/jsonapi/src/JsonapiServiceProvider.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents af1871eacc83
children
rev   line source
Chris@18 1 <?php
Chris@18 2
Chris@18 3 namespace Drupal\jsonapi;
Chris@18 4
Chris@18 5 use Drupal\Core\DependencyInjection\ContainerBuilder;
Chris@18 6 use Drupal\Core\DependencyInjection\ServiceModifierInterface;
Chris@18 7 use Drupal\Core\DependencyInjection\ServiceProviderInterface;
Chris@18 8 use Drupal\Core\StackMiddleware\NegotiationMiddleware;
Chris@18 9 use Drupal\jsonapi\DependencyInjection\Compiler\RegisterSerializationClassesCompilerPass;
Chris@18 10
Chris@18 11 /**
Chris@18 12 * Adds 'api_json' as known format and prevents its use in the REST module.
Chris@18 13 *
Chris@18 14 * @internal JSON:API maintains no PHP API since its API is the HTTP API. This
Chris@18 15 * class may change at any time and this will break any dependencies on it.
Chris@18 16 *
Chris@18 17 * @see https://www.drupal.org/project/jsonapi/issues/3032787
Chris@18 18 * @see jsonapi.api.php
Chris@18 19 */
Chris@18 20 class JsonapiServiceProvider implements ServiceModifierInterface, ServiceProviderInterface {
Chris@18 21
Chris@18 22 /**
Chris@18 23 * {@inheritdoc}
Chris@18 24 */
Chris@18 25 public function alter(ContainerBuilder $container) {
Chris@18 26 if ($container->has('http_middleware.negotiation') && is_a($container->getDefinition('http_middleware.negotiation')->getClass(), NegotiationMiddleware::class, TRUE)) {
Chris@18 27 // @see http://www.iana.org/assignments/media-types/application/vnd.api+json
Chris@18 28 $container->getDefinition('http_middleware.negotiation')
Chris@18 29 ->addMethodCall('registerFormat', [
Chris@18 30 'api_json',
Chris@18 31 ['application/vnd.api+json'],
Chris@18 32 ]);
Chris@18 33 }
Chris@18 34 }
Chris@18 35
Chris@18 36 /**
Chris@18 37 * {@inheritdoc}
Chris@18 38 */
Chris@18 39 public function register(ContainerBuilder $container) {
Chris@18 40 $container->addCompilerPass(new RegisterSerializationClassesCompilerPass());
Chris@18 41 }
Chris@18 42
Chris@18 43 }