jhoffland/guzzle-formatter

PHP Guzzle request/response to HTTP message formatter

1.5 2022-10-20 17:04 UTC

This package is auto-updated.

Last update: 2024-04-20 20:06:12 UTC


README

Tests status StyleCI status

PHP library for formatting Guzzle requests and responses to HTTP messages.

Installation

Latest stable version Total downloads

Install this library directly with Composer:

composer require jhoffland/guzzle-formatter

Add --dev if this library is not needed in a production environment.

Usage

use GuzzleFormatter\RequestFormatter;
use GuzzleFormatter\ResponseFormatter;
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;

$request = new Request('GET', 'https://github.com/jhoffland/guzzle-formatter');
echo (new RequestFormatter())->http($request); // Results in the formatted HTTP request message.

$response = (new Client())->send($request);
echo (new ResponseFormatter())->http($response); // Results in the formatted HTTP response message.

Using middleware

Logging all requests performed and/or responses received by a Guzzle client, using middleware.

The HTTP request and/or response messages are written to the file, specified when creating the HttpFormatterMiddleware class instance.

use GuzzleFormatter\Middleware\HttpFormatterMiddleware;
use GuzzleHttp\Client;
use GuzzleHttp\HandlerStack;

$formatterMiddleware = new HttpFormatterMiddleware('/path/to/output-file.txt');

$handlerStack = HandlerStack::create();

$handlerStack->after('prepare_body', $formatterMiddleware->requests(), 'http_request_formatter');
$handlerStack->after('prepare_body', $formatterMiddleware->responses(), 'http_response_formatter');

$client = new Client([
    'handler' => $handlerStack,
]);
$client->get('https://github.com/jhoffland/guzzle-formatter');

Available options

1. End of Line character

Available when creating an instance of RequestFormatter & ResponseFormatter.

2. Hide sensitive headers

Available for when formatting an HTTP message with RequestFormatter & ResponseFormatter & when creating an instance of HttpFormatterMiddleware.
The headers seen as sensitive can be found in the array Formatter::SENSITIVE_HEADERS.

Supported PHP & package versions

PHP version Guzzle version

This library is tested with PHP 7.4, 8.0 and 8.1.
Check the composer.json file for the supported package versions.

Feel free to add support for additional versions to this library.

Contributing

Feel free to contribute to this library. Contribute by forking the GitHub repository and opening a pull request.
When opening a pull request, please make sure that:

  • The pull request has a clear title;
  • The pull request does not consist of too many (unnecessary/small) commits;
  • The StyleCI analysis pass;
  • The PHPUnit tests pass.

ToDo's

  • Add test for formatting request when making an request to an URL without path (e.g. to https://google.com instead of to https://google.com/).
  • Add test for hiding and not-hiding sensitive headers when using the HttpFormatterMiddleware.
  • Add cURL formatter.