{"id":28506326,"url":"https://github.com/williamespindola/abstract-http-client","last_synced_at":"2025-08-21T02:05:29.372Z","repository":{"id":57080792,"uuid":"86658440","full_name":"williamespindola/abstract-http-client","owner":"williamespindola","description":"Abstract http client with","archived":false,"fork":false,"pushed_at":"2017-12-05T01:31:54.000Z","size":32,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-29T03:18:28.751Z","etag":null,"topics":["abstraction","client","guzzle","guzzlehttp","http-client","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/williamespindola.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-03-30T04:20:26.000Z","updated_at":"2019-11-17T09:52:47.000Z","dependencies_parsed_at":"2022-08-24T14:57:55.555Z","dependency_job_id":null,"html_url":"https://github.com/williamespindola/abstract-http-client","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/williamespindola/abstract-http-client","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/williamespindola%2Fabstract-http-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/williamespindola%2Fabstract-http-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/williamespindola%2Fabstract-http-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/williamespindola%2Fabstract-http-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/williamespindola","download_url":"https://codeload.github.com/williamespindola/abstract-http-client/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/williamespindola%2Fabstract-http-client/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271415496,"owners_count":24755639,"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-08-21T02:00:08.990Z","response_time":74,"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":["abstraction","client","guzzle","guzzlehttp","http-client","php"],"created_at":"2025-06-08T20:05:26.731Z","updated_at":"2025-08-21T02:05:29.178Z","avatar_url":"https://github.com/williamespindola.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# abstract-http-client\n\n[![Latest Version on Packagist][ico-version]][link-packagist]\n[![Software License][ico-license]](LICENSE.md)\n[![Build Status][ico-travis]][link-travis]\n[![Coverage Status][ico-scrutinizer]][link-scrutinizer]\n[![Quality Score][ico-code-quality]][link-code-quality]\n[![Total Downloads][ico-downloads]][link-downloads]\n\nAbstract http client for:\n- guzzle\n\n## Install\n\nVia Composer\n\n``` bash\n$ composer require williamespindola/abstract-http-client\n```\n\n## Usage\n\nextend\n```php\n...\nuse WilliamEspindola\\AbstractHTTPClient\\AbstractRequest;\nuse GuzzleHttp\\Psr7\\Response;\n...\n\nfinal class MyRequest extends AbstractRequest\n{\n    /**\n     * @var string $endPoint End point of resource\n     */\n    protected $endPoint = '/some/end-point/:someStringParam';\n    \n    public function request(string $someStringParam, int $someIntParam): Response\n    {\n        $this-\u003esetParameters([':someStringParam' =\u003e $someStringParam]);\n    \n        $this-\u003ehttpClient-\u003esetOptions(['form_params' =\u003e ['someIntParam' =\u003e $someIntParam]]);\n   \n        return $this-\u003ehttpClient-\u003erequest('POST', $this-\u003egetURI());\n    }\n}\n```\n\nInstance\n```php\nuse GuzzleHttp\\Client;\nuse WilliamEspindola\\AbstractHTTPClient\\MyRequest;\nuse WilliamEspindola\\AbstractHTTPClient\\Client\\GuzzleClient;\n\n$instance = new MyRequest(new GuzzleClient(new Client), 'http://url');\n```\n\nUsing extra query string\n\n```php\nnamespace WilliamEspindola\\AbstractHTTPClient\n\n...\nuse WilliamEspindola\\AbstractHTTPClient\\Client\\AbstractRequest;\nuse WilliamEspindola\\AbstractHTTPClient\\Client\\QueryString\\ExtraQueryString;\nuse GuzzleHttp\\Psr7\\Response;\n...\n\nfinal class MyRequest extends AbstractRequest\n{\n    use ExtraQueryString;\n    \n    /**\n     * @var string $endPoint End point of resource\n     */\n    protected $endPoint = '/some/end-point/:someStringParam';\n    \n    public function request(string $someStringParam, int $someIntParam): Response\n    {\n        $this-\u003esetParameters([':someStringParam' =\u003e $someStringParam]);\n    \n        $this-\u003ehttpClient-\u003esetOptions(['form_params' =\u003e ['someIntParam' =\u003e $someIntParam]]);\n   \n        return $this-\u003ehttpClient\n            -\u003erequest(\n                'POST', \n                $this-\u003egetUriWithExtraString($this-\u003egetURI())\n            );\n    }\n}\n```\n\n## Change log\n\nPlease see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.\n\n## Testing\n\n``` bash\n$ composer test\n```\n\n## Contributing\n\nPlease see [CONTRIBUTING](CONTRIBUTING.md) and [CODE_OF_CONDUCT](CODE_OF_CONDUCT.md) for details.\n\n## Security\n\nIf you discover any security related issues, please email oi@williamespindola.com.br instead of using the issue tracker.\n\n## Credits\n\n- [William Espindola][link-author]\n- [All Contributors][link-contributors]\n\n## License\n\nThe MIT License (MIT). Please see [License File](LICENSE.md) for more information.\n\n[ico-version]: https://img.shields.io/packagist/v/williamespindola/abstract-http-client.svg?style=flat-square\n[ico-license]: https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square\n[ico-travis]: https://img.shields.io/travis/williamespindola/abstract-http-client/master.svg?style=flat-square\n[ico-scrutinizer]: https://img.shields.io/scrutinizer/coverage/g/williamespindola/abstract-http-client.svg?style=flat-square\n[ico-code-quality]: https://img.shields.io/scrutinizer/g/williamespindola/abstract-http-client.svg?style=flat-square\n[ico-downloads]: https://img.shields.io/packagist/dt/williamespindola/abstract-http-client.svg?style=flat-square\n\n[link-packagist]: https://packagist.org/packages/williamespindola/abstract-http-client\n[link-travis]: https://travis-ci.org/williamespindola/abstract-http-client\n[link-scrutinizer]: https://scrutinizer-ci.com/g/williamespindola/abstract-http-client/code-structure\n[link-code-quality]: https://scrutinizer-ci.com/g/williamespindola/abstract-http-client\n[link-downloads]: https://packagist.org/packages/williamespindola/abstract-http-client\n[link-author]: https://github.com/williamespindola\n[link-contributors]: ../../contributors\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwilliamespindola%2Fabstract-http-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwilliamespindola%2Fabstract-http-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwilliamespindola%2Fabstract-http-client/lists"}