plimpton / guzzle-bundle
Integrates Guzzle into Symfony2, comes with WSSE Plugin for RESTful Interfaces
Installs: 12
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 70
Type:symfony-bundle
Requires
- php: >=5.6
- eightpoints/guzzle-wsse-middleware: ~4.0
- guzzlehttp/guzzle: ~6.0
- psr/log: ~1.0
- symfony/dependency-injection: ~2.3|~3.0
- symfony/event-dispatcher: ~2.3|~3.0
- symfony/expression-language: ~2.3|~3.0
- symfony/http-kernel: ~2.3|~3.0
Requires (Dev)
- phpunit/phpunit: ~5.4
- symfony/config: 2.3|~3.0
This package is not auto-updated.
Last update: 2025-03-25 18:50:11 UTC
README
Requirements | Installation | Usage | Events | Features | Suggestions | Contributing | License
Symfony GuzzleBundle
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.
Requirements
- PHP 5.6 or above
- Symfony 2.7 or above
- Guzzle PHP Framework (included by composer)
- WSSE Auth Plugin (included by composer)
Installation
To install this bundle, run the command below and you will get the latest version by Packagist.
composer require plimpton/guzzle-bundle
To use the newest (maybe unstable) version please add following into your composer.json:
{ "require": { "plimpton/guzzle-bundle": "dev-master" } }
Usage
Load bundle in AppKernel.php:
new plimpton\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');
Events
Handling events. Events are dispatched before and after the request to the remote host.
Listening To Events
<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.
Features
Symfony Debug Toolbar / Profiler
Suggestions
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
Contributing
👍 If you would like to contribute to the project, please read the CONTRIBUTING.md.
🎉 Thanks to the contributors who participated in this project.
License
This bundle is released under the MIT license