caciobanu / guzzle-bundle
Integration bundle for guzzle with Symfony.
Installs: 3 085
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 2
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: ^7.1
- guzzlehttp/guzzle: ^6.0
- psr/log: ^1.0
- symfony/framework-bundle: ^4.0
Requires (Dev)
- phpstan/phpstan-shim: ^0.9.2
- phpunit/phpunit: ^7.1
- squizlabs/php_codesniffer: ^3.2
- symfony/yaml: ^4.0
Suggests
- symfony/monolog-bundle: If you want to enable logging and don't want to implement your own 'logger' service.
This package is auto-updated.
Last update: 2024-10-14 03:15:25 UTC
README
This is a Symfony bundle that integrates Guzzle for easier use.
Installation
You can use Composer to install the extension to your project:
composer require caciobanu/guzzle-bundle
Then create a minimal config file caciobanu_guzzle.yml
in config/packages/
:
caciobanu_guzzle: clients: google: base_uri: 'https://google.com'
A complete configuration looks like:
caciobanu_guzzle: clients: google: client_class: 'Your\Client' # You must extend 'GuzzleHttp\Client' which is the default value. base_uri: 'https://google.com' logging: true # Enable logging. Default value: false. options: # See http://docs.guzzlephp.org/en/stable/request-options.html for all available options. timeout: 30 headers: 'User-Agent': 'Test Agent'
Usage
Using services in controller:
/** @var \GuzzleHttp\Client $client */ $client = $this->get('caciobanu_guzzle.client.google'); $response = $client->get('/');
Adding Guzzle middleware
Adding a Guzzle middleware is a two step process:
- Create a new class:
<?php namespace App\Guzzle\Middleware; use Caciobanu\Symfony\GuzzleBundle\Middleware\BeforeRequestMiddlewareInterface; use Psr\Http\Message\RequestInterface; class MyMiddleware implements BeforeRequestMiddlewareInterface { public function __invoke(RequestInterface $request): RequestInterface { // Do something with the request return $request; } }
- Create a Symfony service like so:
# config/services.yaml
services:
App\Guzzle\Middleware\MyMiddleware:
tags:
- { name: 'caciobanu_guzzle.middleware', client: 'google' }
There are three middleware interfaces that can be implemented:
- Caciobanu\Symfony\GuzzleBundle\Middleware\BeforeRequestMiddlewareInterface - marks middleware to be called before sending the request
- Caciobanu\Symfony\GuzzleBundle\Middleware\AfterResponseMiddlewareInterface - marks middleware to be called after the response is received
- Caciobanu\Symfony\GuzzleBundle\Middleware\OnErrorMiddlewareInterface - marks middleware to be called when an errors occurs
- Caciobanu\Symfony\GuzzleBundle\Middleware\RetryMiddlewareInterface - offers the possibility to retry requests
Credits
This library is developed by Catalin Ciobanu.