solcloud / curl
Simple wrapper around cURL
v1.2.0
2022-02-24 16:11 UTC
Requires
- php: >= 7.1
- solcloud/http: ^1.1
This package is auto-updated.
Last update: 2024-05-24 21:06:53 UTC
README
Making http requests with ease.
Usage
Just setup Request
object using setters and pass is to CurlRequest
use Solcloud\Curl\CurlRequest; use Solcloud\Http\Request; $curl = new CurlRequest(); $request = new Request(); $request ->setUrl('https://www.google.com/') ->setConnectionTimeoutSec(1) ->setRequestTimeoutSec(2) ->setHeaders([ 'X-header: x-value', ]) ->setReferer('about:blank') ->setUserAgent('solcloud-curl') ; $response = $curl->fetchResponse($request); echo "GOT {$response->getStatusCode()}: {$response->getRealUrl()}" . PHP_EOL; echo substr($response->getBody(), 0, 30) . '...' . PHP_EOL; print_r($response->getLastHeaders());
For complete example see example.php
Interface
CurlRequest
implements \Solcloud\Http\Contract\IRequestDownloader
interface from solcloud/http
package
public function fetchResponse(Request $request): Response;
Beside CurlRequest
, there is also FileResponse
and StringResponse
implementations for easy mocking or caching.
/** @var \Solcloud\Http\Contract\IRequestDownloader $downloader */ $downloader = new \Solcloud\Curl\FileResponse('/tmp/response.html'); $downloader->fetchResponse($request) // curl not needed
You can also use second constructor parameter $modifyResponseCallback
for more complex behaviour.
use Solcloud\Curl\FileResponse; use Solcloud\Http\Request; use Solcloud\Http\Response; $downloader = new FileResponse('/tmp/response.html', function (Request $request, Response $response): void { if ($request->getUrl() === 'badssl') { throw new \Solcloud\Curl\Exception\Specific\SSLException('SSL error'); } if (rand(0, 1) === 0) { throw new \Solcloud\Http\Exception\ResponseException('Response error'); } $response->setBody($response->getBody() . ' - modified'); }); $downloader->fetchResponse($request);