Mercurial > hg > isophonics-drupal-site
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 } |