Requirements | Installation | Usage | Events | Features | Suggestions | Contributing | License
This bundle integrates Guzzle 6.x into Symfony. Guzzle is a PHP framework for building RESTful web service clients. It comes with a WSSE Auth Plugin that can be used optionally.
GuzzleBundle follows semantic versioning. Read more on semver.org.
- PHP 5.6 or above
- Symfony 2.7 or above
- Guzzle PHP Framework (included by composer)
- WSSE Auth Plugin (included by composer)
To install this bundle, run the command below and you will get the latest version by Packagist.
composer require eightpoints/guzzle-bundle
To use the newest (maybe unstable) version please add following into your composer.json:
{
"require": {
"eightpoints/guzzle-bundle": "dev-master"
}
}
Load bundle in AppKernel.php:
new EightPoints\Bundle\GuzzleBundle\GuzzleBundle()
Configuration in config.yml:
guzzle:
# (de)activate logging/profiler; default: %kernel.debug%
logging: true
clients:
api_payment:
base_url: "http://api.domain.tld"
# custom headers (@deprecated, will be removed in v6; new: "headers" in options (see below))
headers:
Accept: "application/json"
# guzzle client options (full description here: https://guzzle.readthedocs.org/en/latest/request-options.html)
# NOTE: "headers" option is not accepted here as it is provided as described above.
options:
auth:
- acme # login
- pa55w0rd # password
headers:
Accept: "application/json"
timeout: 30
# plugin settings
plugin:
wsse:
username: "acme"
password: "pa55w0rd"
created_at: "-10 seconds" # optional
api_crm:
base_url: "http://api.crm.tld"
headers:
Accept: "application/json"
...
All these settings are optional. If WSSE username is defined the WSSE plugin will be injected automatically.
Using services in controller (guzzle.client.api_crm represents the client name of the yaml config and is an instance of GuzzleHttp\Client):
/** @var \GuzzleHttp\Client $client */
$client = $this->get('guzzle.client.api_crm');
$response = $client->get('/users');
Handling events. Events are dispatched before and after the request to the remote host.
<service id="listenerID" class="Your\ListenerClass\That\Implements\GuzzleEventListenerInterface">
<tag name="kernel.event_listener" event="guzzle_bundle.pre_transaction" method="onPreTransaction" service="servicename"/>
</service>
Your event Listener, or Subscriber MUST implement GuzzleBundle\Events\GuzzleEventListenerInterface.
Events dispatched are guzzle_bundle.pre_transaction, guzzle_bundle.post_transaction.
The service on the tag, is so that if you have multiple REST endpoints you can define which service a particular listener is interested in.
Adding aliases: If you want to use different names for provided services you can use aliases. This is a good idea if you don't want have any dependency to guzzle in your service name.
services:
crm.client:
alias: guzzle.client.api_crm
👍 If you would like to contribute to the project, please read the CONTRIBUTING.md.
🎉 Thanks to the contributors who participated in this project.
This bundle is released under the MIT license