Skip to content

Latest commit

 

History

History
86 lines (60 loc) · 2.79 KB

plugins.md

File metadata and controls

86 lines (60 loc) · 2.79 KB

Guzzle plugins

Clients created through the Guzzle service builder need to attach plugins in their factory() method instead.

Guzzle plugins can be created and attached to your clients easily in your bundle.

For example, to attach the CurlAuth plugin to your client first create a service for the plugin:

// MyBundle/Resources/config/services.xml

<service id="example.client.curl_auth" class="%guzzle.plugin.curl_auth.class%">
    <argument>%example.client.curl_auth.username%</argument>
    <argument>%example.client.curl_auth.password%</argument>
</service>

Next set the username and password parameters from your application's configuration:

// MyBundle/DependencyInjection/MyBundleExtension.php

$container->setParameter('example.client.curl_auth.username', $config['username']);
$container->setParameter('example.client.curl_auth.password', $config['password']);

Then attach the plugin service to your client service through the addSubscriber() method:

// MyBundle/Resources/config/services.xml

<service id="example.client" class="%guzzle.client.class%">
    // ...
    <call method="addSubscriber">
        <argument type="service" id="example.client.curl_auth"/>
    </call>
</service>

Parameters

The bundle provides parameters for each of the standard Guzzle plugin classes.

  • %guzzle.plugin.async.class%
  • %guzzle.plugin.backoff.class%
  • %guzzle.plugin.cache.class%
  • %guzzle.plugin.cookie.class%
  • %guzzle.plugin.curl_auth.class%
  • %guzzle.plugin.history.class%
  • %guzzle.plugin.log.class%
  • %guzzle.plugin.md5_validator.class%
  • %guzzle.plugin.command_content_md5.class%
  • %guzzle.plugin.mock.class%
  • %guzzle.plugin.oauth.class%

Logging

Guzzle clients are automatically connected to your Symfony2 application's Monolog through the misd_guzzle.log.monolog service.

Log format can be customized through the configuration:

// app/config.yml
misd_guzzle:
    log:
        format: debug # default/debug/short or custom MessageFormatter string

Caching

The bundle provides the misd_guzzle.cache.filesystem service, which allows you to quickly take advantage of caching. Simply add the service to your client:

// MyBundle/Resources/config/services.xml

<service id="example.client" class="%guzzle.client.class%">
    // ...
    <call method="addSubscriber">
        <argument type="service" id="misd_guzzle.cache.filesystem"/>
    </call>
</service>

This will be slower than using, say, Memcache, but doesn't require any dependencies.

By default the files are stored in app/cache/{env}/guzzle/. This can be changed in your configuration:

// app/config.yml

misd_guzzle:
    filesystem_cache:
        path: "%kernel.cache_dir%/my_folder/"