{"id":34000073,"url":"https://github.com/jhoffland/guzzle-formatter","last_synced_at":"2025-12-13T09:11:49.363Z","repository":{"id":42626494,"uuid":"470917304","full_name":"jhoffland/guzzle-formatter","owner":"jhoffland","description":"PHP Guzzle request/response to HTTP message formatter","archived":false,"fork":false,"pushed_at":"2022-10-20T17:05:29.000Z","size":31,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-07T11:19:39.393Z","etag":null,"topics":["guzzle","http","php"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jhoffland.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-03-17T08:58:49.000Z","updated_at":"2022-10-16T15:24:56.000Z","dependencies_parsed_at":"2022-08-30T10:02:32.189Z","dependency_job_id":null,"html_url":"https://github.com/jhoffland/guzzle-formatter","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/jhoffland/guzzle-formatter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jhoffland%2Fguzzle-formatter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jhoffland%2Fguzzle-formatter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jhoffland%2Fguzzle-formatter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jhoffland%2Fguzzle-formatter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jhoffland","download_url":"https://codeload.github.com/jhoffland/guzzle-formatter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jhoffland%2Fguzzle-formatter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27702961,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-13T02:00:09.769Z","response_time":147,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["guzzle","http","php"],"created_at":"2025-12-13T09:11:48.777Z","updated_at":"2025-12-13T09:11:49.353Z","avatar_url":"https://github.com/jhoffland.png","language":"PHP","readme":"# Guzzle Formatter\n\n[![Tests status](https://github.com/joephoffland/guzzle-formatter/actions/workflows/testing.yml/badge.svg)](https://github.com/jhoffland/guzzle-formatter/actions/workflows/testing.yml)\n[![StyleCI status](https://github.styleci.io/repos/470917304/shield?style=flat\u0026branch=main)](https://github.styleci.io/repos/470917304?branch=main)\n\nPHP library for formatting Guzzle requests and responses to [HTTP messages](https://developer.mozilla.org/en-US/docs/Web/HTTP/Messages).\n\n\n## Installation\n\n[![Latest stable version](http://poser.pugx.org/jhoffland/guzzle-formatter/v)](https://packagist.org/packages/jhoffland/guzzle-formatter)\n[![Total downloads](http://poser.pugx.org/jhoffland/guzzle-formatter/downloads)](https://packagist.org/packages/jhoffland/guzzle-formatter)\n\nInstall this library directly with Composer:\n\n```shell\ncomposer require jhoffland/guzzle-formatter\n```\n\nAdd `--dev` if this library is not needed in a production environment.\n\n## Usage\n\n```php\nuse GuzzleFormatter\\RequestFormatter;\nuse GuzzleFormatter\\ResponseFormatter;\nuse GuzzleHttp\\Client;\nuse GuzzleHttp\\Psr7\\Request;\n\n$request = new Request('GET', 'https://github.com/jhoffland/guzzle-formatter');\necho (new RequestFormatter())-\u003ehttp($request); // Results in the formatted HTTP request message.\n\n$response = (new Client())-\u003esend($request);\necho (new ResponseFormatter())-\u003ehttp($response); // Results in the formatted HTTP response message.\n```\n\n### Using middleware\n\nLogging all requests performed and/or responses received by a Guzzle client, using [middleware](https://docs.guzzlephp.org/en/stable/handlers-and-middleware.html#middleware).\n\nThe HTTP request and/or response messages are written to the file, specified when creating the `HttpFormatterMiddleware` class instance.\n\n```php\nuse GuzzleFormatter\\Middleware\\HttpFormatterMiddleware;\nuse GuzzleHttp\\Client;\nuse GuzzleHttp\\HandlerStack;\n\n$formatterMiddleware = new HttpFormatterMiddleware('/path/to/output-file.txt');\n\n$handlerStack = HandlerStack::create();\n\n$handlerStack-\u003eafter('prepare_body', $formatterMiddleware-\u003erequests(), 'http_request_formatter');\n$handlerStack-\u003eafter('prepare_body', $formatterMiddleware-\u003eresponses(), 'http_response_formatter');\n\n$client = new Client([\n    'handler' =\u003e $handlerStack,\n]);\n$client-\u003eget('https://github.com/jhoffland/guzzle-formatter');\n```\n\n### Available options\n\n#### 1. End of Line character\n\nAvailable when creating an instance of [`RequestFormatter`](src/RequestFormatter.php) \u0026 [`ResponseFormatter`](src/ResponseFormatter.php).\n\n#### 2. Hide sensitive headers\n\nAvailable for when formatting an HTTP message with [`RequestFormatter`](src/RequestFormatter.php) \u0026 [`ResponseFormatter`](src/ResponseFormatter.php) \u0026 when creating an instance of [`HttpFormatterMiddleware`](src/Middleware/HttpFormatterMiddleware.php).\u003cbr /\u003e\nThe headers seen as sensitive can be found in the array [`Formatter::SENSITIVE_HEADERS`](src/Formatter.php).\n\n\n## Supported PHP \u0026 package versions\n\n[![PHP version](http://poser.pugx.org/jhoffland/guzzle-formatter/require/php)](composer.json)\n[![Guzzle version](https://poser.pugx.org/jhoffland/guzzle-formatter/require/guzzlehttp/guzzle)](composer.json)\n\nThis library is tested with PHP 7.4, 8.0 and 8.1.\u003cbr /\u003e\nCheck the [`composer.json`](composer.json) file for the supported package versions.\n\nFeel free to add support for additional versions to this library.\n\n\n## Contributing\n\nFeel free to contribute to this library. Contribute by forking the [GitHub repository](https://github.com/jhoffland/guzzle-formatter) and opening a pull request.\u003cbr /\u003e\nWhen opening a pull request, please make sure that:\n\n- The pull request has a clear title;\n- The pull request does not consist of too many (unnecessary/small) commits;\n- The [StyleCI](https://github.styleci.io/repos/470917304) analysis pass;\n- The PHPUnit tests pass.\n\n\n## ToDo's\n\n- [ ] 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/).\n- [ ] Add test for hiding and not-hiding sensitive headers when using the `HttpFormatterMiddleware`.\n- [ ] Add cURL formatter.","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjhoffland%2Fguzzle-formatter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjhoffland%2Fguzzle-formatter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjhoffland%2Fguzzle-formatter/lists"}