sharkmachine / psr18-shark
A simple cURL PSR-18 client
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:project
Requires
- php: >=8.3
- ext-curl: *
- psr/http-client: ^1.0
- psr/http-factory: ^1.0
- psr/http-message: ^2.0
Requires (Dev)
- mockery/mockery: ^1.6
- nyholm/psr7: ^1.0
- phpunit/phpunit: ^11.4
- roave/security-advisories: dev-latest
Suggests
- nyholm/psr7: Lightweight library for PSR-7 & PSR-17
This package is auto-updated.
Last update: 2024-11-12 14:02:00 UTC
README
A simple PSR-18 curl client for PHP. You need PSR-7 and PSR-17 libraries to use this client, for example nyholm/psr7
.
The following design choices have been made:
- The client doesn't follow redirects. You need to either handle it in the code yourself or use
RedirectTransferHandler
. - The client doesn't throw any exceptions unless there is a curl error. If you need handling for HTTP 4xx or 5xx status codes, you either need to implement it yourself or use
ThrowOnErrorTransferHandler
.
Request mutation
If you need to change the request before it is sent without relying on PSR-18 functionality, you can create mutation handlers for it. $requestMutationHandlerCollection
constructor parameter is used to pass a collection of handlers to the client.
Response mutation
If you need to change the response before it is returned without relying on PSR-18 functionality, you can create mutation handlers for it. $responseMutationHandlerCollection
constructor parameter is used to pass a collection of handlers to the client.
Transfer handlers
Transfer handlers can be used to handle exceptions thrown in the case of curl errors or to handle re-sending the request in certain situations. $transferHandlerCollection
constructor parameter is used to pass a collection of handlers to the client.
Please note that if a response cannot be received and the handler doesn't throw an exception in this case, NoResponseException
is thrown.
The following transfer handlers are included in the library:
RedirectTransferHandler
- Handler that will follow redirects.ThrowOnErrorTransferHandler
- Handler that will throw an exception if the response status code is 4xx or 5xx.
Custom curl options
You can pass custom curl options to the client with $curlOptions
constructor parameter. Please note that the following options are ignored:
CURLOPT_FOLLOWLOCATION
- Redirects are not followed, please useRedirectTransferHandler
or handle the redirects yourself.CURLOPT_HEADER
- Headers are set in the request.CURLOPT_WRITEFUNCTION
- The client uses this to get the response body.CURLOPT_HEADERFUNCTION
- The client uses this to get the response headers.