You are here

public function CurlFactory::create in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php \GuzzleHttp\Handler\CurlFactory::create()

Creates a cURL handle resource.

Parameters

RequestInterface $request Request:

array $options Transfer options:

Return value

EasyHandle

Throws

\RuntimeException when an option cannot be applied

Overrides CurlFactoryInterface::create

File

vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php, line 32

Class

CurlFactory
Creates curl resources from a request

Namespace

GuzzleHttp\Handler

Code

public function create(RequestInterface $request, array $options) {
  if (isset($options['curl']['body_as_string'])) {
    $options['_body_as_string'] = $options['curl']['body_as_string'];
    unset($options['curl']['body_as_string']);
  }
  $easy = new EasyHandle();
  $easy->request = $request;
  $easy->options = $options;
  $conf = $this
    ->getDefaultConf($easy);
  $this
    ->applyMethod($easy, $conf);
  $this
    ->applyHandlerOptions($easy, $conf);
  $this
    ->applyHeaders($easy, $conf);
  unset($conf['_headers']);

  // Add handler options from the request configuration options
  if (isset($options['curl'])) {
    $conf = array_replace($conf, $options['curl']);
  }
  $conf[CURLOPT_HEADERFUNCTION] = $this
    ->createHeaderFn($easy);
  $easy->handle = $this->handles ? array_pop($this->handles) : curl_init();
  curl_setopt_array($easy->handle, $conf);
  return $easy;
}