jhoffland / guzzle-formatter
PHP Guzzle request/response to HTTP message formatter
Requires
- php: >=7.4
- guzzlehttp/guzzle: ^7.0
- psr/http-message: ^1.0
Requires (Dev)
- phpunit/phpunit: ^9.5
- rector/rector: ^0.14.6
README
PHP library for formatting Guzzle requests and responses to HTTP messages.
Installation
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
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.