m6web/wsclient-bundle

Simple webservices client to call external urls


License
MIT

Documentation

this bundle is deprecated

usage of https://github.com/M6Web/GuzzleHttpBundle is recommended

Bundle WSClient Build Status

This bundle give a simple webservices client to call external urls. By default, it is based on Guzzle but you can plug any other client library.

Services

No default service is defined. You must set a configuration to instanciate one or more services.

Configuration

The main configuration key is m6_ws_client. Each subkey defines an instance of a webservice client. These services are named m6_ws_client_ + the subkey except for the default subkey that defines the main service m6_ws_client. For each instance, several parameters can be set :

  • base_url : the base domain of each url called with the service. If an absolute url is passed to the client, the base url is ignored.
  • config (optional) : additional parameters to configure the client, must be an array. See http://guzzle.readthedocs.org/en/latest/clients.html#request-options
  • cache (optional) :
    • ttl : 86400s by default. Max ttl if force_request_ttl is FALSE, forced ttl if force_request_ttl is TRUE
    • force_request_ttl (optional) : FALSE by default. If TRUE, request TTL is the same than the cache TTL, otherwise the request TTL is calculated according to response headers.
    • service : low level cache service (must implement M6Web\Bundle\WSClientBundle\Cache\CacheInterface)
    • adpater : adapter class name (must implement \Doctrine\Common\Cache\Cache)
    • storage : (optional) storage class name (must implement \GuzzleHttp\Subscriber\Cache\CacheStorageInterface)
    • subscriber : (optional) subscriber class (must implement \GuzzleHttp\Subscriber\Cache\SubscriberInterface)
    • can_cache : (optional) a callable to determine if a request can be cached

Here is an example of a simple configuration :

m6_ws_client:
    clients:
        default:
            base_url: 'toto.m6web.fr'
            config:
                timeout: 10
                allow_redirects: {max: 5, strict: false, referer: true}
                exceptions: false
            cache:
                ttl: 3600
                adapter: M6\Bundle\RedisBundle\Guzzle\RedisCacheAdapter
                service: m6_redis

Simple use case

For instance, in a controller :

$wsclient = $this->get('m6_ws_client');
$response = $wsclient->get('http://toto.m6web.fr/parse/?content=my_content');

echo $response->getBody();

unit test

composer install --dev
./bin/atoum