annotate core/modules/jsonapi/jsonapi.services.yml @ 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 parameters:
Chris@18 2 jsonapi.base_path: /jsonapi
Chris@18 3
Chris@18 4 services:
Chris@18 5 jsonapi.serializer:
Chris@18 6 class: Drupal\jsonapi\Serializer\Serializer
Chris@18 7 calls:
Chris@18 8 - [setFallbackNormalizer, ['@serializer']]
Chris@18 9 arguments: [{ }, { }]
Chris@18 10 serializer.normalizer.http_exception.jsonapi:
Chris@18 11 class: Drupal\jsonapi\Normalizer\HttpExceptionNormalizer
Chris@18 12 arguments: ['@current_user']
Chris@18 13 tags:
Chris@18 14 - { name: jsonapi_normalizer }
Chris@18 15 serializer.normalizer.unprocessable_entity_exception.jsonapi:
Chris@18 16 class: Drupal\jsonapi\Normalizer\UnprocessableHttpEntityExceptionNormalizer
Chris@18 17 arguments: ['@current_user']
Chris@18 18 tags:
Chris@18 19 # This must have a higher priority than the 'serializer.normalizer.http_exception.jsonapi' to take effect.
Chris@18 20 - { name: jsonapi_normalizer, priority: 1 }
Chris@18 21 serializer.normalizer.entity_access_exception.jsonapi:
Chris@18 22 class: Drupal\jsonapi\Normalizer\EntityAccessDeniedHttpExceptionNormalizer
Chris@18 23 arguments: ['@current_user']
Chris@18 24 tags:
Chris@18 25 # This must have a higher priority than the 'serializer.normalizer.http_exception.jsonapi' to take effect.
Chris@18 26 - { name: jsonapi_normalizer, priority: 1 }
Chris@18 27 serializer.normalizer.field_item.jsonapi:
Chris@18 28 class: Drupal\jsonapi\Normalizer\FieldItemNormalizer
Chris@18 29 arguments: ['@entity_type.manager']
Chris@18 30 tags:
Chris@18 31 - { name: jsonapi_normalizer }
Chris@18 32 serializer.normalizer.field.jsonapi:
Chris@18 33 class: Drupal\jsonapi\Normalizer\FieldNormalizer
Chris@18 34 tags:
Chris@18 35 - { name: jsonapi_normalizer }
Chris@18 36 serializer.normalizer.resource_identifier.jsonapi:
Chris@18 37 class: Drupal\jsonapi\Normalizer\ResourceIdentifierNormalizer
Chris@18 38 arguments: ['@entity_field.manager']
Chris@18 39 tags:
Chris@18 40 - { name: jsonapi_normalizer }
Chris@18 41 serializer.normalizer.data.jsonapi:
Chris@18 42 class: Drupal\jsonapi\Normalizer\DataNormalizer
Chris@18 43 tags:
Chris@18 44 - { name: jsonapi_normalizer }
Chris@18 45 serializer.normalizer.resource_object.jsonapi:
Chris@18 46 class: Drupal\jsonapi\Normalizer\ResourceObjectNormalizer
Chris@18 47 tags:
Chris@18 48 - { name: jsonapi_normalizer }
Chris@18 49 serializer.normalizer.content_entity.jsonapi:
Chris@18 50 class: Drupal\jsonapi\Normalizer\ContentEntityDenormalizer
Chris@18 51 arguments: ['@entity_type.manager', '@entity_field.manager', '@plugin.manager.field.field_type']
Chris@18 52 tags:
Chris@18 53 - { name: jsonapi_normalizer }
Chris@18 54 serializer.normalizer.config_entity.jsonapi:
Chris@18 55 class: Drupal\jsonapi\Normalizer\ConfigEntityDenormalizer
Chris@18 56 arguments: ['@entity_type.manager', '@entity_field.manager', '@plugin.manager.field.field_type']
Chris@18 57 tags:
Chris@18 58 - { name: jsonapi_normalizer }
Chris@18 59 serializer.normalizer.jsonapi_document_toplevel.jsonapi:
Chris@18 60 class: Drupal\jsonapi\Normalizer\JsonApiDocumentTopLevelNormalizer
Chris@18 61 arguments: ['@entity_type.manager', '@jsonapi.resource_type.repository']
Chris@18 62 tags:
Chris@18 63 - { name: jsonapi_normalizer }
Chris@18 64 serializer.normalizer.link_collection.jsonapi:
Chris@18 65 class: Drupal\jsonapi\Normalizer\LinkCollectionNormalizer
Chris@18 66 tags:
Chris@18 67 - { name: jsonapi_normalizer }
Chris@18 68 serializer.normalizer.entity_reference_field.jsonapi:
Chris@18 69 class: Drupal\jsonapi\Normalizer\EntityReferenceFieldNormalizer
Chris@18 70 tags:
Chris@18 71 # This must have a higher priority than the 'serializer.normalizer.field.jsonapi' to take effect.
Chris@18 72 - { name: jsonapi_normalizer, priority: 1 }
Chris@18 73 serializer.encoder.jsonapi:
Chris@18 74 class: Drupal\jsonapi\Encoder\JsonEncoder
Chris@18 75 tags:
Chris@18 76 - { name: jsonapi_encoder, format: 'api_json' }
Chris@18 77 jsonapi.resource_type.repository:
Chris@18 78 class: Drupal\jsonapi\ResourceType\ResourceTypeRepository
Chris@18 79 arguments: ['@entity_type.manager', '@entity_type.bundle.info', '@entity_field.manager', '@cache.jsonapi_resource_types']
Chris@18 80 jsonapi.route_enhancer:
Chris@18 81 class: Drupal\jsonapi\Routing\RouteEnhancer
Chris@18 82 tags:
Chris@18 83 - { name: route_enhancer }
Chris@18 84 jsonapi.field_resolver:
Chris@18 85 class: Drupal\jsonapi\Context\FieldResolver
Chris@18 86 arguments: ['@entity_type.manager', '@entity_field.manager', '@entity_type.bundle.info', '@jsonapi.resource_type.repository', '@module_handler']
Chris@18 87 jsonapi.include_resolver:
Chris@18 88 class: Drupal\jsonapi\IncludeResolver
Chris@18 89 arguments:
Chris@18 90 - '@entity_type.manager'
Chris@18 91 - '@jsonapi.entity_access_checker'
Chris@18 92 paramconverter.jsonapi.entity_uuid:
Chris@18 93 parent: paramconverter.entity
Chris@18 94 class: Drupal\jsonapi\ParamConverter\EntityUuidConverter
Chris@18 95 calls:
Chris@18 96 - [setLanguageManager, ['@language_manager']]
Chris@18 97 tags:
Chris@18 98 # Priority 10, to ensure it runs before @paramconverter.entity.
Chris@18 99 - { name: paramconverter, priority: 10 }
Chris@18 100 paramconverter.jsonapi.resource_type:
Chris@18 101 class: Drupal\jsonapi\ParamConverter\ResourceTypeConverter
Chris@18 102 arguments: ['@jsonapi.resource_type.repository']
Chris@18 103 tags:
Chris@18 104 - { name: paramconverter }
Chris@18 105 jsonapi.exception_subscriber:
Chris@18 106 class: Drupal\jsonapi\EventSubscriber\DefaultExceptionSubscriber
Chris@18 107 tags:
Chris@18 108 - { name: event_subscriber }
Chris@18 109 arguments: ['@jsonapi.serializer', '%serializer.formats%']
Chris@18 110
Chris@18 111 logger.channel.jsonapi:
Chris@18 112 parent: logger.channel_base
Chris@18 113 arguments: ['jsonapi']
Chris@18 114
Chris@18 115 # Cache.
Chris@18 116 cache.jsonapi_resource_types:
Chris@18 117 class: Drupal\Core\Cache\MemoryCache\MemoryCache
Chris@18 118 # We need this to add this to the Drupal's cache_tags.invalidator service.
Chris@18 119 # This way it can invalidate the data in here based on tags.
Chris@18 120 tags: [{ name: cache.bin }]
Chris@18 121
Chris@18 122 # Route filter.
Chris@18 123 jsonapi.route_filter.format_setter:
Chris@18 124 class: Drupal\jsonapi\Routing\EarlyFormatSetter
Chris@18 125 tags:
Chris@18 126 # Set to a high priority so it runs before content_type_header_matcher
Chris@18 127 # and other filters that might throw exceptions.
Chris@18 128 - { name: route_filter, priority: 100 }
Chris@18 129
Chris@18 130 # Access Control
Chris@18 131 jsonapi.entity_access_checker:
Chris@18 132 class: Drupal\jsonapi\Access\EntityAccessChecker
Chris@18 133 public: false
Chris@18 134 arguments: ['@jsonapi.resource_type.repository', '@router.no_access_checks', '@current_user', '@entity.repository']
Chris@18 135 calls:
Chris@18 136 - [setNodeRevisionAccessCheck, ['@?access_check.node.revision']] # This is only injected when the service is available.
Chris@18 137 - [setMediaRevisionAccessCheck, ['@?access_check.media.revision']] # This is only injected when the service is available.
Chris@18 138 # This is a temporary measure. JSON:API should not need to be aware of the Content Moderation module.
Chris@18 139 - [setLatestRevisionCheck, ['@?access_check.latest_revision']] # This is only injected when the service is available.
Chris@18 140 access_check.jsonapi.relationship_field_access:
Chris@18 141 class: Drupal\jsonapi\Access\RelationshipFieldAccess
Chris@18 142 arguments: ['@jsonapi.entity_access_checker']
Chris@18 143 tags:
Chris@18 144 - { name: access_check, applies_to: _jsonapi_relationship_field_access, needs_incoming_request: TRUE }
Chris@18 145
Chris@18 146 # Route filters.
Chris@18 147 method_filter.jsonapi:
Chris@18 148 public: false
Chris@18 149 class: Drupal\jsonapi\Routing\ReadOnlyModeMethodFilter
Chris@18 150 decorates: method_filter
Chris@18 151 arguments: ['@method_filter.jsonapi.inner', '@config.factory']
Chris@18 152
Chris@18 153 # Controller.
Chris@18 154 jsonapi.entity_resource:
Chris@18 155 class: Drupal\jsonapi\Controller\EntityResource
Chris@18 156 arguments:
Chris@18 157 - '@entity_type.manager'
Chris@18 158 - '@entity_field.manager'
Chris@18 159 - '@jsonapi.resource_type.repository'
Chris@18 160 - '@renderer'
Chris@18 161 - '@entity.repository'
Chris@18 162 - '@jsonapi.include_resolver'
Chris@18 163 - '@jsonapi.entity_access_checker'
Chris@18 164 - '@jsonapi.field_resolver'
Chris@18 165 - '@jsonapi.serializer'
Chris@18 166 - '@datetime.time'
Chris@18 167 - '@current_user'
Chris@18 168 jsonapi.file_upload:
Chris@18 169 class: Drupal\jsonapi\Controller\FileUpload
Chris@18 170 arguments:
Chris@18 171 - '@current_user'
Chris@18 172 - '@entity_field.manager'
Chris@18 173 - '@jsonapi.file.uploader.field'
Chris@18 174 - '@http_kernel'
Chris@18 175
Chris@18 176 # Event subscribers.
Chris@18 177 jsonapi.custom_query_parameter_names_validator.subscriber:
Chris@18 178 class: Drupal\jsonapi\EventSubscriber\JsonApiRequestValidator
Chris@18 179 tags:
Chris@18 180 - { name: event_subscriber }
Chris@18 181 jsonapi.resource_response.subscriber:
Chris@18 182 class: Drupal\jsonapi\EventSubscriber\ResourceResponseSubscriber
Chris@18 183 arguments: ['@jsonapi.serializer']
Chris@18 184 tags:
Chris@18 185 - { name: event_subscriber }
Chris@18 186 jsonapi.resource_response_validator.subscriber:
Chris@18 187 class: Drupal\jsonapi\EventSubscriber\ResourceResponseValidator
Chris@18 188 arguments: ['@jsonapi.serializer', '@logger.channel.jsonapi', '@module_handler', '@app.root']
Chris@18 189 calls:
Chris@18 190 - [setValidator, []]
Chris@18 191 tags:
Chris@18 192 - { name: event_subscriber, priority: 1000 }
Chris@18 193
Chris@18 194 # Revision management.
Chris@18 195 jsonapi.version_negotiator:
Chris@18 196 class: Drupal\jsonapi\Revisions\VersionNegotiator
Chris@18 197 public: false
Chris@18 198 tags:
Chris@18 199 - { name: service_collector, tag: jsonapi_version_negotiator, call: addVersionNegotiator }
Chris@18 200 jsonapi.version_negotiator.default:
Chris@18 201 arguments: ['@entity_type.manager']
Chris@18 202 public: false
Chris@18 203 abstract: true
Chris@18 204 jsonapi.version_negotiator.id:
Chris@18 205 class: Drupal\jsonapi\Revisions\VersionById
Chris@18 206 parent: jsonapi.version_negotiator.default
Chris@18 207 tags:
Chris@18 208 - { name: jsonapi_version_negotiator, negotiator_name: 'id' }
Chris@18 209 jsonapi.version_negotiator.rel:
Chris@18 210 class: Drupal\jsonapi\Revisions\VersionByRel
Chris@18 211 parent: jsonapi.version_negotiator.default
Chris@18 212 tags:
Chris@18 213 - { name: jsonapi_version_negotiator, negotiator_name: 'rel' }
Chris@18 214 jsonapi.resource_version.route_enhancer:
Chris@18 215 class: Drupal\jsonapi\Revisions\ResourceVersionRouteEnhancer
Chris@18 216 public: false
Chris@18 217 arguments:
Chris@18 218 - '@jsonapi.version_negotiator'
Chris@18 219 tags:
Chris@18 220 - { name: route_enhancer }
Chris@18 221
Chris@18 222 # Deprecated services.
Chris@18 223 serializer.normalizer.htt_exception.jsonapi:
Chris@18 224 alias: serializer.normalizer.http_exception.jsonapi
Chris@18 225 deprecated: The "%service_id%" service is deprecated. You should use the 'serializer.normalizer.http_exception.jsonapi' service instead.
Chris@18 226
Chris@18 227 # @todo Remove once https://www.drupal.org/project/drupal/issues/2940383 lands.
Chris@18 228 jsonapi.file.uploader.field:
Chris@18 229 class: Drupal\jsonapi\Controller\TemporaryJsonapiFileFieldUploader
Chris@18 230 public: false
Chris@18 231 arguments: ['@logger.channel.file', '@file_system', '@file.mime_type.guesser', '@token', '@lock', '@config.factory']