I updated the client so it requires a PSR-18 HTTP client instead of a PHP-HTTP client. As this is a breaking change, I took the liberty to also change the way our client is bound in the service provider. The client now discovers HTTP clients itself. A custom HTTP client must now be registered by customizing the container binding.
Motivation and context
PSR-18 has been released for a while and most PHP-HTTP implementations now also implement PSR-18. Both changes should also make the usage without Laravel easier.
I also implemented PSR-17 HTTP factories as the currently used factory in combination with the discovery is deprecated. Currently just a few libraries implement these interfaces, so I required nyholm/psr7 for now. Once most HTTP clients implement these interfaces (Guzzle for example is working on it), we can drop it as a dependency and leave it to the consumer to choose an implementation.
How has this been tested?
Tested with existing/updated unit tests.
Types of changes
What types of changes does your code introduce? Put an x in all the boxes that apply:
[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[x] Breaking change (fix or feature that would cause existing functionality to change)
Checklist:
Go over all the following points, and put an x in all the boxes that apply.
Description
I updated the client so it requires a PSR-18 HTTP client instead of a PHP-HTTP client. As this is a breaking change, I took the liberty to also change the way our client is bound in the service provider. The client now discovers HTTP clients itself. A custom HTTP client must now be registered by customizing the container binding.
Motivation and context
PSR-18 has been released for a while and most PHP-HTTP implementations now also implement PSR-18. Both changes should also make the usage without Laravel easier.
I also implemented PSR-17 HTTP factories as the currently used factory in combination with the discovery is deprecated. Currently just a few libraries implement these interfaces, so I required nyholm/psr7 for now. Once most HTTP clients implement these interfaces (Guzzle for example is working on it), we can drop it as a dependency and leave it to the consumer to choose an implementation.
How has this been tested?
Tested with existing/updated unit tests.
Types of changes
What types of changes does your code introduce? Put an
x
in all the boxes that apply:Checklist:
Go over all the following points, and put an
x
in all the boxes that apply.