# Learn more about services, parameters and containers at
# https://symfony.com/doc/current/service_container.html
parameters:
    #parameter_name: value

services:
    # default configuration for services in *this* file
    _defaults:
        # automatically injects dependencies in your services
        autowire: true
        bind:
            $env: '%kernel.environment%'
            $timeZone: '%csweb_api_default_timezone%'
            $apiSchemaVersion: '%csweb_api_schema_version%'

        # automatically registers your services as commands, event subscribers, etc.
        autoconfigure: true
        # this means you cannot fetch services directly from the container via $container->get()
        # if you need to do this, you can override this setting on individual services
        public: false

    # makes classes in src/AppBundle available to be used as services
    # this creates a service per class whose id is the fully-qualified class name
    AppBundle\:
        resource: '../../src/AppBundle/*'
        # you can exclude directories or files
        # but if a service is unused, it's removed anyway
        exclude: '../../src/AppBundle/{Entity,Repository,Tests,config.php,version.php}'

    # controllers are imported separately to make sure they're public
    # and have a tag that allows actions to type-hint services
    AppBundle\Controller\:
        resource: '../../src/AppBundle/Controller'
        public: true
        tags: ['controller.service_arguments']

    # add more services, or override services that need manual wiring
    # AppBundle\Service\ExampleService:
    #     arguments:
    #         $someArgument: 'some_value'
    #UI - guzzle client service for invoking api endpoints
    GuzzleHttp\Client:
        arguments:
            -
              http_errors: false
    
    #HttpHelperService
    AppBundle\Service\HttpHelper:
        public: true
        arguments:
            $baseUri: '%cspro_rest_api_url%'
    
    AppBundle\Service\OAuthHelper:
        public: true
        arguments:
            $database_host: "%database_host%"
            $database_name: "%database_name%"
            $database_user: "%database_user%"
            $database_password: "%database_password%"
    #PdoService
    AppBundle\Service\PdoHelper:
        public: true
        arguments:
            $database_host: "%database_host%"
            $database_name: "%database_name%"
            $database_user: "%database_user%"
            $database_password: "%database_password%"
    #Monolog DB Handler
    cspro_monolog_handler:
        class: AppBundle\Service\CSProMySQLHandler
        autowire: true
        public: true
        arguments:
            $level: "%csweb_db_log_level%"
    #ApiKeyUserProvider 
    api_key_user_provider:
        class: AppBundle\Security\ApiKeyUserProvider
        public: true
   