A PSR7 aware cURL client
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
src
tests
.coveralls.yml
.editorconfig
.gitattributes
.gitignore
.php_cs
.scrutinizer.yml
.styleci.yml
.travis.yml
CONTRIBUTING.md
LICENSE
README.md
composer.json
phpunit.xml

README.md

PHP version Latest Version License

Build Status Style Check Code Quality Code Coverage

Total Downloads Monthly Downloads

PSR7 aware cURL client

PSR7 compatible cURL client.

Use PSR7 Request and Response objects to perform HTTP Requests with cURL.

Installation

Best way to install is using Composer:

composer require juliangut/spiral

Then require_once the autoload file:

require_once './vendor/autoload.php';

Usage

use Jgut\Spiral\Client;

// Create Spiral cURL client
$spiralClient = new Client;

// Create \Psr\Http\Message\RequestInterface request and configure it
$request = new PSR7RequestImplementation();

// Perform the request providing an empty \Psr\Http\Message\ResponseInterface response object to be populated
$response = $spiralClient->request($request, new PSR7ResponseImplementation());

// Use response
$headers = $response->getHeaders();
$content = (string) $response->getBody();

Transport

You can create an empty cURL transport object and set options on it later

$transport = new Curl;

$spiralClient = new Client($transport);

Or you can create the transport object from sane defaults

$transport = Curl::createFromDefaults();

$spiralClient = new Client($transport);

If no transport object is provided to Jgut\Spiral\Client constructor method one will be created by Jgut\Spiral\Transport\Curl::createFromDefaults

Options

Transport object accepts cURL options

use Jgut\Spiral\Transport\Curl;
use Jgut\Spiral\Option\ConnectTimeout;

// Create Spiral cURL client
$transport = new Curl;

// Set option explicitly
$transport->setOption(new ConnectTimeout(10));

// Set by cURL constant
$transport->setOption(CURLOPT_CONNECTTIMEOUT, 10);

// Set using an alias
$transport->setOption('connect_timeout', 10);

Reserved options

Some options are reserved and cannot be added to transport object using setOption method. Some of them are set by extracting the relevant data from request oobject.

The following is a list of options automatically handled by the transport object

  • CURLOPT_NOBODY
  • CURLOPT_HTTPGET
  • CURLOPT_POST
  • CURLOPT_CUSTOMREQUEST
  • CURLOPT_URL
  • CURLOPT_POSTFIELDS
  • CURLOPT_HTTPHEADER

Available options

Option class Alias cURL constant Value type
AutoReferer auto_referer CURLOPT_AUTOREFERER bool
ConnectTimeout connect_timeout CURLOPT_CONNECTTIMEOUT int
Cookie cookie CURLOPT_COOKIE string
CookieFile cookie_file CURLOPT_COOKIEFILE string
CookieJar cookie_jar CURLOPT_COOKIEJAR string
Crlf crlf CURLOPT_CRLF bool
Encoding encoding CURLOPT_ENCODING string
FileTime file_time CURLOPT_FILETIME bool
FollowLocation follow_location CURLOPT_FOLLOWLOCATION bool
Header header CURLOPT_HEADER bool
HeaderOut header_out CURLINFO_HEADER_OUT bool
HttpAuth http_auth CURLOPT_HTTPAUTH bool
HttpVersion http_version CURLOPT_HTTP_VERSION float (1.0 or 1.1)
MaxRedirs max_redirs CURLOPT_MAXREDIRS int
Port port CURLOPT_PORT int
Referer referer CURLOPT_REFERER string
ReturnTransfer return_transfer CURLOPT_RETURNTRANSFER bool
SslVerifyPeer ssl_verify_peer CURLOPT_SSL_VERIFYPEER bool
SslVersion ssl_version CURLOPT_SSLVERSION int
Timeout timeout CURLOPT_TIMEOUT int
UnrestrictedAuth unrestricted_auth CURLOPT_UNRESTRICTED_AUTH bool
UserAgent user_agent CURLOPT_USERAGENT string
UserPwd user_password CURLOPT_USERPWD string (user:password)
Verbose verbose CURLOPT_VERBOSE bool

Review Jgut\Spiral\Option\OptionFactory for a full list of available aliases

Contributing

Found a bug or have a feature request? Please open a new issue. Have a look at existing issues before

See file CONTRIBUTING.md

License

Release under BSD-3-Clause License.

See file LICENSE included with the source code for a copy of the license terms