<?xml version="1.0" encoding="UTF-8"?>
<container xmlns="http://symfony.com/schema/dic/services"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">

    <services>
        <service id="httplug.formatter.full_http_message" class="Http\Message\Formatter\FullHttpMessageFormatter" public="false" />

        <service id="httplug.collector.formatter" class="Http\HttplugBundle\Collector\Formatter" public="false">
            <argument type="service" id="httplug.formatter.full_http_message"/>
            <argument type="service">
                <service class="Http\Message\Formatter\CurlCommandFormatter" />
            </argument>
        </service>

        <service id="httplug.collector.collector" class="Http\HttplugBundle\Collector\Collector" public="false">
            <tag name="data_collector" template="@Httplug/webprofiler.html.twig" priority="200" id="httplug"/>
            <tag name="kernel.reset" method="reset"/>
        </service>

        <service id="httplug.plugin.stack" class="Http\HttplugBundle\Collector\StackPlugin" public="false" abstract="true">
            <argument type="service" id="httplug.collector.collector"/>
            <argument type="service" id="httplug.collector.formatter"/>
        </service>

        <service id="httplug.collector.twig.http_message" class="Http\HttplugBundle\Collector\Twig\HttpMessageMarkupExtension" public="false">
            <argument type="service" id="var_dumper.cloner" on-invalid="null" />
            <argument type="service" id="var_dumper.html_dumper" on-invalid="null" />
            <tag name="twig.extension" />
        </service>

        <!-- Discovered clients -->
        <service id="httplug.collector.auto_discovered_client" class="Http\HttplugBundle\Collector\ProfileClient" decorates="httplug.auto_discovery.auto_discovered_client" public="false">
            <argument type="service" id="httplug.collector.auto_discovered_client.inner"/>
            <argument type="service" id="httplug.collector.collector"/>
            <argument type="service" id="httplug.collector.formatter"/>
            <argument type="service" id="debug.stopwatch"/>
        </service>

        <service id="httplug.collector.auto_discovered_async" class="Http\HttplugBundle\Collector\ProfileClient" decorates="httplug.auto_discovery.auto_discovered_async" public="false">
            <argument type="service" id="httplug.collector.auto_discovered_async.inner"/>
            <argument type="service" id="httplug.collector.collector"/>
            <argument type="service" id="httplug.collector.formatter"/>
            <argument type="service" id="debug.stopwatch"/>
        </service>

        <!-- ClientFactories -->
        <service id="httplug.collector.factory.auto" class="Http\HttplugBundle\Collector\ProfileClientFactory" decorates="httplug.factory.auto" public="false">
            <argument type="service" id="httplug.collector.factory.auto.inner"/>
            <argument type="service" id="httplug.collector.collector"/>
            <argument type="service" id="httplug.collector.formatter"/>
            <argument type="service" id="debug.stopwatch"/>
        </service>
        <service id="httplug.collector.factory.buzz" class="Http\HttplugBundle\Collector\ProfileClientFactory" decorates="httplug.factory.buzz" public="false">
            <argument type="service" id="httplug.collector.factory.buzz.inner"/>
            <argument type="service" id="httplug.collector.collector"/>
            <argument type="service" id="httplug.collector.formatter"/>
            <argument type="service" id="debug.stopwatch"/>
        </service>
        <service id="httplug.collector.factory.curl" class="Http\HttplugBundle\Collector\ProfileClientFactory" decorates="httplug.factory.curl" public="false">
            <argument type="service" id="httplug.collector.factory.curl.inner"/>
            <argument type="service" id="httplug.collector.collector"/>
            <argument type="service" id="httplug.collector.formatter"/>
            <argument type="service" id="debug.stopwatch"/>
        </service>
        <service id="httplug.collector.factory.guzzle5" class="Http\HttplugBundle\Collector\ProfileClientFactory" decorates="httplug.factory.guzzle5" public="false">
            <argument type="service" id="httplug.collector.factory.guzzle5.inner"/>
            <argument type="service" id="httplug.collector.collector"/>
            <argument type="service" id="httplug.collector.formatter"/>
            <argument type="service" id="debug.stopwatch"/>
        </service>
        <service id="httplug.collector.factory.guzzle6" class="Http\HttplugBundle\Collector\ProfileClientFactory" decorates="httplug.factory.guzzle6" public="false">
            <argument type="service" id="httplug.collector.factory.guzzle6.inner"/>
            <argument type="service" id="httplug.collector.collector"/>
            <argument type="service" id="httplug.collector.formatter"/>
            <argument type="service" id="debug.stopwatch"/>
        </service>
        <service id="httplug.collector.factory.guzzle7" class="Http\HttplugBundle\Collector\ProfileClientFactory" decorates="httplug.factory.guzzle7" public="false">
            <argument type="service" id="httplug.collector.factory.guzzle7.inner"/>
            <argument type="service" id="httplug.collector.collector"/>
            <argument type="service" id="httplug.collector.formatter"/>
            <argument type="service" id="debug.stopwatch"/>
        </service>
        <service id="httplug.collector.factory.react" class="Http\HttplugBundle\Collector\ProfileClientFactory" decorates="httplug.factory.react" public="false">
            <argument type="service" id="httplug.collector.factory.react.inner"/>
            <argument type="service" id="httplug.collector.collector"/>
            <argument type="service" id="httplug.collector.formatter"/>
            <argument type="service" id="debug.stopwatch"/>
        </service>
        <service id="httplug.collector.factory.socket" class="Http\HttplugBundle\Collector\ProfileClientFactory" decorates="httplug.factory.socket" public="false">
            <argument type="service" id="httplug.collector.factory.socket.inner"/>
            <argument type="service" id="httplug.collector.collector"/>
            <argument type="service" id="httplug.collector.formatter"/>
            <argument type="service" id="debug.stopwatch"/>
        </service>

        <service id="Http\Client\Common\PluginClientFactory" class="Http\HttplugBundle\Collector\PluginClientFactory" public="false">
            <argument type="service" id="httplug.collector.collector"/>
            <argument type="service" id="httplug.collector.formatter"/>
            <argument type="service" id="debug.stopwatch"/>
        </service>

        <service id="Http\HttplugBundle\Collector\PluginClientFactoryListener" class="Http\HttplugBundle\Collector\PluginClientFactoryListener">
            <argument type="service" id="Http\Client\Common\PluginClientFactory" />

            <tag name="kernel.event_subscriber" />
        </service>
    </services>
</container>
