juliangut/spiral

A PSR7 aware cURL client

0.4 2017-06-03 15:19 UTC

This package is auto-updated.

Last update: 2024-11-15 11:55:33 UTC


README

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

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