gremo / buzz-bundle
Symfony Bundle for using the lightweight Buzz HTTP client.
Installs: 49 897
Dependents: 0
Suggesters: 0
Security: 0
Stars: 7
Watchers: 1
Forks: 5
Open Issues: 0
Type:symfony-bundle
Requires
- php: >=5.3.2
- kriswallsmith/buzz: >= 0.6,<1.0
- symfony/config: ~2.0|~3.0
- symfony/dependency-injection: ~2.0|~3.0
- symfony/http-kernel: ~2.0|~3.0
README
Symfony Bundle for using the lightweight Buzz HTTP client.
Installation
Add the bundle in your composer.json
file:
{ "require": { "gremo/buzz-bundle": "~1.0" } }
Then run composer update
and register the bundle with your kernel in app/appKernel.php
:
<?php // app/AppKernel.php public function registerBundles() { $bundles = array( // ... new Gremo\BuzzBundle\GremoBuzzBundle(), // ... ); }
Legacy Symfony (2.0.*)
Add the following to your deps
file:
[buzz]
git=https://github.com/kriswallsmith/Buzz.git
[GremoBuzzBundle]
git=https://github.com/gremo/GremoBuzzBundle.git
target=bundles/Gremo/BuzzBundle
Then run php bin/vendors update
and register the namespaces with the autoloader (app/autoload.php
):
<?php // app/autoload.php $loader->registerNamespaces(array( // ... 'Buzz' => __DIR__.'/../vendor/buzz/lib', 'Gremo' => __DIR__.'/../vendor/bundles', // ... ));
Finally register the bundle with your kernel in app/appKernel.php
:
<?php // app/AppKernel.php public function registerBundles() { $bundles = array( // ... new Gremo\BuzzBundle\GremoBuzzBundle(), // ... ); }
Configuration
Configuration is not needed. Available options and types (for the default values see Buzz\Client\AbstractClient
):
# GremoBuzzBundle Configuration gremo_buzz: client: "native" # allowed "curl", "multi_curl" or "native" options: ignore_errors: ~ # boolean max_redirects: ~ # integer proxy: ~ # string timeout: ~ # integer verify_host: ~ # integer verify_peer: ~ # boolean
Usage
Get the gremo_buzz
service from the service container:
/** @var $browser \Buzz\Browser */ $browser = $this->get('gremo_buzz');
Refer to Kris Wallsmith Buzz library for sending HTTP requests.
Dependency Injection Tags
You can register a listener creating a service that implements Buzz\Listener\ListenerInterface
and tagging it as gremo_buzz.listener
(optionally defining a priority
attribute). Higher priority means that the corresponding listener is executed first.
Example listener that logs outgoing requests:
<?php use Buzz\Listener\ListenerInterface; use Buzz\Message\MessageInterface; use Buzz\Message\RequestInterface; use JMS\DiExtraBundle\Annotation as DI; use Psr\Log\LoggerInterface; /** * @DI\Service("buzz.listener.logger") * @DI\Tag("gremo_buzz.listener", attributes={"priority"=10}) */ class BuzzLoggerListener implements ListenerInterface { /** * @var \Psr\Log\LoggerInterface */ private $logger; /** * @var float */ private $startTime; /** * @DI\InjectParams({"logger" = @DI\Inject("logger")}) */ public function __construct(LoggerInterface $logger) { $this->logger = $logger; } /** * {@inheritdoc} */ public function preSend(RequestInterface $request) { $this->startTime = microtime(true); } /** * {@inheritdoc} */ public function postSend(RequestInterface $request, MessageInterface $response) { $this->logger->info(sprintf( 'Sent "%s %s%s" in %dms', $request->getMethod(), $request->getHost(), $request->getResource(), round((microtime(true) - $this->startTime) * 1000) )); } }
Note that this example uses the new Psr\Log\LoggerInterface
and may not work for old versions of Symfony.