usage of https://github.com/M6Web/GuzzleHttpBundle is recommended
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.
No default service is defined. You must set a configuration to instanciate one or more services.
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-optionscache
(optional) :ttl
: 86400s by default. Max ttl if force_request_ttl is FALSE, forced ttl if force_request_ttl is TRUEforce_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
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();
composer install --dev
./bin/atoum