skqr/hateoas-bundle

View on GitHub
Resources/config/services.yml

Summary

Maintainability
Test Coverage
parameters:
  hateoas.resource_cache.class: GoIntegro\Hateoas\JsonApi\ArrayResourceCache
  hateoas.metadata_cache.class: GoIntegro\Hateoas\Metadata\Entity\ArrayMetadataCache
  hateoas.config.resource_entity_map_cache.class: GoIntegro\Bundle\HateoasBundle\Config\ResourceEntityMapSymfonyCache
  hateoas.config.raml_doc_cache.class: GoIntegro\Bundle\HateoasBundle\Config\RamlDocSymfonyCache

services:
  hateoas.config.resource_entity_mapper:
    class: GoIntegro\Hateoas\Config\ResourceEntityMapper
    arguments:
      - @doctrine.orm.entity_manager
      - @hateoas.metadata_cache
      - @hateoas.raml.navigator
      - @hateoas.config.resource_entity_map_cache

  hateoas.config.resource_entity_map_cache:
    class: %hateoas.config.resource_entity_map_cache.class%
    arguments: [@kernel]

  hateoas.request_parser:
    class: GoIntegro\Hateoas\JsonApi\Request\Parser
    arguments:
      - @hateoas.config.resource_entity_mapper
      - @hateoas.raml.navigator
      - @hateoas.request_parser.filter
      - @hateoas.request_parser.pagination
      - @hateoas.request_parser.body
      - @hateoas.request_parser.action
      - @hateoas.request_parser.entities
      - @hateoas.request_parser.locale
      - @hateoas.metadata_miner
      - %api.url_path%

  hateoas.request_parser.filter:
    class: GoIntegro\Hateoas\JsonApi\Request\FilterParser
    public: false
    arguments: [@hateoas.metadata_miner]

  hateoas.request_parser.pagination:
    class: GoIntegro\Hateoas\JsonApi\Request\PaginationParser
    public: false
    arguments: [@hateoas.metadata_miner]

  hateoas.request_parser.body:
    class: GoIntegro\Hateoas\JsonApi\Request\BodyParser
    public: false
    arguments:
      - @hateoas.json_coder
      - @hateoas.raml.navigator
      - @hateoas.request_parser.hydrant
      - @hateoas.request_parser.body.create
      - @hateoas.request_parser.body.update
      - @hateoas.request_parser.body.link
      - @hateoas.request_parser.body.unlink

  hateoas.request_parser.body.create:
    class: GoIntegro\Hateoas\JsonApi\Request\CreateBodyParser
    public: false

  hateoas.request_parser.body.update:
    class: GoIntegro\Hateoas\JsonApi\Request\UpdateBodyParser
    public: false
    arguments:
      - @hateoas.request_parser.body.translations

  hateoas.request_parser.body.link:
    class: GoIntegro\Hateoas\JsonApi\Request\LinkBodyParser
    public: false

  hateoas.request_parser.body.unlink:
    class: GoIntegro\Hateoas\JsonApi\Request\UnlinkBodyParser
    public: false

  hateoas.request_parser.body.translations:
    class: GoIntegro\Hateoas\JsonApi\Request\TranslationsParser
    public: false

  hateoas.request_parser.action:
    class: GoIntegro\Hateoas\JsonApi\Request\ActionParser
    public: false
    arguments:
      - @hateoas.json_coder
      - @hateoas.metadata_miner

  hateoas.request_parser.entities:
    class: GoIntegro\Hateoas\JsonApi\Request\ParamEntityFinder
    public: false
    arguments:
      - @doctrine.orm.entity_manager
      - @security.context
      - @hateoas.repo_helper

  hateoas.request_parser.locale:
    class: GoIntegro\Hateoas\JsonApi\Request\LocaleNegotiator
    public: false

  hateoas.request_parser.default_locale:
    class: GoIntegro\Hateoas\JsonApi\Request\DefaultLocaleNegotiator
    public: false
    tags:
      - { name: hateoas.request_parser.locale }

  hateoas.request_parser.hydrant:
    class: GoIntegro\Hateoas\JsonApi\Request\ResourceLinksHydrant
    public: false
    arguments:
      - @doctrine.orm.entity_manager
      - @hateoas.metadata_miner

  hateoas.metadata_miner:
    class: GoIntegro\Hateoas\Metadata\Resource\MetadataMiner
    arguments: [@hateoas.miner_provider]

  hateoas.miner_provider:
    class: GoIntegro\Hateoas\Metadata\Resource\MinerProvider
    arguments:
      - @hateoas.metadata_cache
      - %api.resource_class_path%

  hateoas.resource_manager:
    class: GoIntegro\Hateoas\JsonApi\ResourceManager
    arguments:
      - @hateoas.metadata_miner
      - @hateoas.resource_cache
      - @service_container

  hateoas.resource_cache:
    class: %hateoas.resource_cache.class%
    arguments:
      - @hateoas.metadata_cache
      - @hateoas.metadata_miner
      - @service_container
      - %go_integro_hateoas.cache%

  hateoas.metadata_cache:
    class: %hateoas.metadata_cache.class%
    arguments: [@doctrine.orm.entity_manager]

  hateoas.repo_helper:
    class: GoIntegro\Hateoas\Util\RepositoryHelper
    arguments: [@doctrine.orm.entity_manager]

  hateoas.repo_helper.default_filter:
    class: GoIntegro\Hateoas\JsonApi\Request\DefaultFilter
    public: false
    tags:
      - { name: hateoas.repo_helper.filter }

  hateoas.document_blender:
    class: GoIntegro\Hateoas\JsonApi\Merge\Blender
    arguments: [@hateoas.json_coder]

  hateoas.json_coder:
    class: GoIntegro\Json\JsonCoder

  hateoas.json_validator:
    class: GoIntegro\Bundle\HateoasBundle\Util\JsonValidator
    arguments: [@kernel, @hateoas.json_coder]

  hateoas.entity.builder:
    class: GoIntegro\Hateoas\Entity\Builder
    scope: request

  hateoas.entity.default_builder:
    class: GoIntegro\Hateoas\Entity\DefaultBuilder
    public: false
    arguments:
      - @doctrine.orm.entity_manager
      - @validator
      - @security.context
      - @hateoas.metadata_cache
    tags:
      -  { name: hateoas.entity.builder, resource_type: default }

  hateoas.entity.mutator:
    class: GoIntegro\Hateoas\Entity\Mutator
    scope: request

  hateoas.entity.default_mutator:
    class: GoIntegro\Hateoas\Entity\DefaultMutator
    public: false
    arguments:
      - @doctrine.orm.entity_manager
      - @validator
      - @hateoas.metadata_cache
    tags:
      -  { name: hateoas.entity.mutator, resource_type: default }

  hateoas.entity.deleter:
    class: GoIntegro\Hateoas\Entity\Deleter

  hateoas.entity.default_deleter:
    class: GoIntegro\Hateoas\Entity\DefaultDeleter
    public: false
    arguments:
      - @doctrine.orm.entity_manager
      - @hateoas.request_parser
    tags:
      -  { name: hateoas.entity.deleter, resource_type: default }

  hateoas.serializer.document:
    class: GoIntegro\Hateoas\JsonApi\DocumentSerializer
    arguments:
      - @hateoas.serializer.document.links
      - @hateoas.serializer.document.linked
      - @hateoas.serializer.document.meta
      - @security.context

  hateoas.serializer.document.links:
    class: GoIntegro\Hateoas\JsonApi\Serializer\TopLevelLinksSerializer
    public: false
    arguments:
      - @hateoas.serializer.document.include_links
      - @hateoas.serializer.document.pagination_links

  hateoas.serializer.document.include_links:
    class: GoIntegro\Hateoas\JsonApi\Serializer\TopLevelLinkedLinksSerializer
    public: false
    arguments: [%api.url_path%]

  hateoas.serializer.document.pagination_links:
    class: GoIntegro\Hateoas\JsonApi\Serializer\TopLevelPaginationLinksSerializer
    public: false
    arguments: [%api.url_path%]

  hateoas.serializer.document.linked:
    class: GoIntegro\Hateoas\JsonApi\Serializer\LinkedResourcesSerializer
    public: false
    arguments: [@security.context]

  hateoas.serializer.document.meta:
    class: GoIntegro\Hateoas\JsonApi\Serializer\MetadataSerializer
    public: false
    arguments:
      - @hateoas.serializer.document.pagination_meta
      - @hateoas.serializer.document.search_result_meta
      - @hateoas.serializer.document.translations_meta

  hateoas.serializer.document.pagination_meta:
    class: GoIntegro\Hateoas\JsonApi\Serializer\PaginationMetadataSerializer
    public: false

  hateoas.serializer.document.search_result_meta:
    class: GoIntegro\Hateoas\JsonApi\Serializer\SearchResultMetadataSerializer
    public: false

  hateoas.serializer.document.translations_meta:
    class: GoIntegro\Hateoas\JsonApi\Serializer\TranslationsMetadataSerializer
    public: false
    arguments: [@doctrine.orm.entity_manager]

  hateoas.raml.parser:
    class: GoIntegro\Raml\DocParser
    arguments: [@hateoas.raml.map_collection_parser, @hateoas.raml.expander]

  hateoas.raml.map_collection_parser:
    class: GoIntegro\Raml\MapCollectionParser
    arguments: [@hateoas.json_coder]

  hateoas.raml.expander:
    class: GoIntegro\Raml\DocExpander

  hateoas.config.raml_doc_cache:
    class: %hateoas.config.raml_doc_cache.class%
    arguments: [@kernel]

  hateoas.raml.navigator_factory:
    class: GoIntegro\Bundle\HateoasBundle\DependencyInjection\Factory\RamlNavigatorFactory
    arguments:
      - @kernel
      - @hateoas.raml.parser
      - @hateoas.config.raml_doc_cache

  hateoas.raml.navigator:
    class: GoIntegro\Raml\DocNavigator
    factory_service: hateoas.raml.navigator_factory
    factory_method: createNavigator
    arguments: [@hateoas.json_coder]