protected function prepare($curl, RequestInterface $request, ParameterBag $options): ResponseBuilder
    {
        if (\defined('CURLOPT_PROTOCOLS')) {
            curl_setopt($curl, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS);
            curl_setopt($curl, CURLOPT_REDIR_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS);
        }

        curl_setopt($curl, CURLOPT_HEADER, false);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, false);
        curl_setopt($curl, CURLOPT_FAILONERROR, false);

        $this->setOptionsFromParameterBag($curl, $options);
        $this->setOptionsFromRequest($curl, $request);

        $responseBuilder = new ResponseBuilder($this->responseFactory);
        curl_setopt($curl, CURLOPT_HEADERFUNCTION, function ($ch, $data) use ($responseBuilder) {
            $str = trim($data);
            if ('' !== $str) {
                if (0 === strpos(strtolower($str), 'http/')) {
                    $responseBuilder->setStatus($str);
                } else {
                    $responseBuilder->addHeader($str);
                }
            }

            return \strlen($data);
        });

        curl_setopt($curl, CURLOPT_WRITEFUNCTION, function ($ch, $data) use ($responseBuilder) {
            return $responseBuilder->writeBody($data);
        });

        // apply additional options
        curl_setopt_array($curl, $options->get('curl'));

        return $responseBuilder;
    }
protected function prepare($curl, RequestInterface $request, ParameterBag $options): ResponseBuilder
    {
        if (\defined('CURLOPT_PROTOCOLS')) {
            curl_setopt($curl, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS);
            curl_setopt($curl, CURLOPT_REDIR_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS);
        }

        curl_setopt($curl, CURLOPT_HEADER, false);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, false);
        curl_setopt($curl, CURLOPT_FAILONERROR, false);

        $this->setOptionsFromParameterBag($curl, $options);
        $this->setOptionsFromRequest($curl, $request);

        $responseBuilder = new ResponseBuilder($this->responseFactory);
        curl_setopt($curl, CURLOPT_HEADERFUNCTION, function ($ch, $data) use ($responseBuilder) {
            $str = trim($data);
            if ('' !== $str) {
                if (0 === strpos(strtolower($str), 'http/')) {
                    $responseBuilder->setStatus($str);
                } else {
                    $responseBuilder->addHeader($str);
                }
            }

            return \strlen($data);
        });

        curl_setopt($curl, CURLOPT_WRITEFUNCTION, function ($ch, $data) use ($responseBuilder) {
            return $responseBuilder->writeBody($data);
        });

        // apply additional options
        curl_setopt_array($curl, $options->get('curl'));

        return $responseBuilder;
    }
protected function prepare ( $ curl , RequestInterface $ request , ParameterBag $ options ) : ResponseBuilder { if ( \ defined ( 'CURLOPT_PROTOCOLS' ) ) { curl_setopt ( $ curl , CURLOPT_PROTOCOLS , CURLPROTO_HTTP | CURLPROTO_HTTPS ) ; curl_setopt ( $ curl , CURLOPT_REDIR_PROTOCOLS , CURLPROTO_HTTP | CURLPROTO_HTTPS ) ; } curl_setopt ( $ curl , CURLOPT_HEADER , false ) ; curl_setopt ( $ curl , CURLOPT_RETURNTRANSFER , false ) ; curl_setopt ( $ curl , CURLOPT_FAILONERROR , false ) ; $ this -> setOptionsFromParameterBag ( $ curl , $ options ) ; $ this -> setOptionsFromRequest ( $ curl , $ request ) ; $ responseBuilder = new ResponseBuilder ( $ this -> responseFactory ) ; curl_setopt ( $ curl , CURLOPT_HEADERFUNCTION , function ( $ ch , $ data ) use ( $ responseBuilder ) { $ str = trim ( $ data ) ; if ( '' !== $ str ) { if ( 0 === strpos ( strtolower ( $ str ) , 'http/' ) ) { $ responseBuilder -> setStatus ( $ str ) ; } else { $ responseBuilder -> addHeader ( $ str ) ; } } return \ strlen ( $ data ) ; } ) ; curl_setopt ( $ curl , CURLOPT_WRITEFUNCTION , function ( $ ch , $ data ) use ( $ responseBuilder ) { return $ responseBuilder -> writeBody ( $ data ) ; } ) ; // apply additional options curl_setopt_array ( $ curl , $ options -> get ( 'curl' ) ) ; return $ responseBuilder ; }
Prepares a cURL resource to send a request.

@param resource $curl
Prepares a cURL resource to send a request .