2017 © Pedro Peláez
 

symfony-bundle guzzle-bundle

Provide Symfony2 web profiler for Guzzle

image

playbloom/guzzle-bundle

Provide Symfony2 web profiler for Guzzle

  • Monday, May 18, 2015
  • by ludofleury
  • Repository
  • 6 Watchers
  • 82 Stars
  • 217,893 Installations
  • PHP
  • 5 Dependents
  • 1 Suggesters
  • 21 Forks
  • 5 Open issues
  • 7 Versions
  • 3 % Grown

The README.md

Guzzle Bundle Build Status Latest Stable Version Total Downloads

Provide a basic logger and an advanced profiler for Guzzle, (*1)

  • The basic logger use the default Symfony app logger, it's safe to use in your production environement.
  • The advanced profiler is for debug purposes and will display a dedicated report available in the toolbar and Symfony Web Profiler

Guzzle Symfony web profiler panel Guzzle Symfony web profiler panel - request details Guzzle Symfony web profiler panel - response details, (*2)

Installation

composer require --dev playbloom/guzzle-bundle

or, (*3)

Add the composer requirements, (*4)

{
    "require-dev": {
        "playbloom/guzzle-bundle": "v1.2.0"
    },
}

Add the bundle to your Symfony app kernel, (*5)

<?php
    // in %your_project%/app/AppKernel.php
    $bundles[] = new Playbloom\Bundle\GuzzleBundle\PlaybloomGuzzleBundle();
?>

To enable the advanced profiler & the toolbar/web profiler panel, add this line to your app/config/config_dev.yml, (*6)

playbloom_guzzle:
    web_profiler: true

Guzzle client as a Symfony service

Concrete Guzzle client creation can be easily managed by the Symfony service container thanks to a simple factory configuration, in this case, you just need to tag your guzzle service(s) with playbloom_guzzle.client., (*7)

It will add the basic logger to your client(s). If the web_profiler is enabled in the current environement, it will also add the advanced profiler and display report on the Symfony toolbar/web profiler., (*8)

# config/services.yaml
services:
    acme.client:
        class: '%acme.client.class%'
        factory: ['%acme.client.class%', 'factory']
        tags: ['playbloom_guzzle.client']

Add the logger/profiler manually to a Guzzle client

If you need to handle the registration of the logger or profiler plugin manually, you can retrieve theses services from the Symfony container., (*9)

<?php

$client = new \Guzzle\Http\Client('https://my.api.com');

// basic logger service plugged & configured with the default Symfony app logger
$loggerPlugin = $container->get('playbloom_guzzle.client.plugin.logger');
$client->addSubscriber($loggerPlugin);

// advanced profiler for developement and debug, requires web_profiler to be enabled
$profilerPlugin = $container->get('playbloom_guzzle.client.plugin.profiler');
$client->addSubscriber($profilerPlugin);

Customize your own profiler panel

If you need a custom profiler panel you can extend/reuse easily the data collector and profiler template from this bundle., (*10)

For example, you have a GithubBundle which interact with the Github API. You also have a Github profiler panel to debug your developement and you want to have the API requests profiled in this panel., (*11)

It's quite easy: First, define your own GithubDataCollector extending the Playbloom\Bundle\GuzzleBundle\DataCollector\GuzzleDataCollector, (*12)

Then extends the guzzle web profiler template, (*13)

{% extends 'PlaybloomGuzzleBundle:Collector:guzzle.html.twig' %}

{% block panel %}


Github

  • Github API key: {{ collector.getApiKey }}
{% include 'PlaybloomGuzzleBundle:Profiler:requests.html.twig' with {'requests': collector.requests } %} {% endblock %}

And finally declare your data collector, (*14)

# config/services.yaml
services:
    data_collector.github:
        class: Acme\GithubBundle\DataCollector\GithubDataCollector
        arguments:
            - '@playbloom_guzzle.client.plugin.profiler'
        tags:
            - { name: data_collector, template: '@AcmeGithub/Collector/github.html.twig', id: github }

That's it, now your profiler panel displays your custom information and the Guzzle API requests., (*15)

TODO

  • Add extra information about the client configuration itself (thanks to the guzzle service builder?)
  • Add clients|host|endpoint|time filters for http requests

Licence

This bundle is under the MIT license. See the complete license in the bundle, (*16)

Credits

  • Swagger for the UI

The Versions