protected function createCurlSettingsArray(RequestInterface $request): array
    {
        $settings = $this->curlSettings;

        switch ($request->getMethod()) {
            case 'HEAD':
                $settings[CURLOPT_NOBODY] = true;
                $settings[CURLOPT_CUSTOMREQUEST] = 'HEAD';
                break;
            case 'GET':
                $settings[CURLOPT_CUSTOMREQUEST] = 'GET';
                break;
            default:
                $body = $request->getBody();
                if (is_resource($body)) {
                    // This needs to be set to PUT, regardless of the actual
                    // method used. Without it, INFILE will be ignored for some
                    // reason.
                    $settings[CURLOPT_PUT] = true;
                    $settings[CURLOPT_INFILE] = $request->getBody();
                } else {
                    // For security we cast this to a string. If somehow an array could
                    // be passed here, it would be possible for an attacker to use @ to
                    // post local files.
                    $settings[CURLOPT_POSTFIELDS] = (string) $body;
                }
                $settings[CURLOPT_CUSTOMREQUEST] = $request->getMethod();
                break;
        }

        $nHeaders = [];
        foreach ($request->getHeaders() as $key => $values) {
            foreach ($values as $value) {
                $nHeaders[] = $key.': '.$value;
            }
        }
        $settings[CURLOPT_HTTPHEADER] = $nHeaders;
        $settings[CURLOPT_URL] = $request->getUrl();
        // FIXME: CURLOPT_PROTOCOLS is currently unsupported by HHVM
        if (defined('CURLOPT_PROTOCOLS')) {
            $settings[CURLOPT_PROTOCOLS] = CURLPROTO_HTTP | CURLPROTO_HTTPS;
        }
        // FIXME: CURLOPT_REDIR_PROTOCOLS is currently unsupported by HHVM
        if (defined('CURLOPT_REDIR_PROTOCOLS')) {
            $settings[CURLOPT_REDIR_PROTOCOLS] = CURLPROTO_HTTP | CURLPROTO_HTTPS;
        }

        return $settings;
    }
protected function createCurlSettingsArray(RequestInterface $request): array
    {
        $settings = $this->curlSettings;

        switch ($request->getMethod()) {
            case 'HEAD':
                $settings[CURLOPT_NOBODY] = true;
                $settings[CURLOPT_CUSTOMREQUEST] = 'HEAD';
                break;
            case 'GET':
                $settings[CURLOPT_CUSTOMREQUEST] = 'GET';
                break;
            default:
                $body = $request->getBody();
                if (is_resource($body)) {
                    // This needs to be set to PUT, regardless of the actual
                    // method used. Without it, INFILE will be ignored for some
                    // reason.
                    $settings[CURLOPT_PUT] = true;
                    $settings[CURLOPT_INFILE] = $request->getBody();
                } else {
                    // For security we cast this to a string. If somehow an array could
                    // be passed here, it would be possible for an attacker to use @ to
                    // post local files.
                    $settings[CURLOPT_POSTFIELDS] = (string) $body;
                }
                $settings[CURLOPT_CUSTOMREQUEST] = $request->getMethod();
                break;
        }

        $nHeaders = [];
        foreach ($request->getHeaders() as $key => $values) {
            foreach ($values as $value) {
                $nHeaders[] = $key.': '.$value;
            }
        }
        $settings[CURLOPT_HTTPHEADER] = $nHeaders;
        $settings[CURLOPT_URL] = $request->getUrl();
        // FIXME: CURLOPT_PROTOCOLS is currently unsupported by HHVM
        if (defined('CURLOPT_PROTOCOLS')) {
            $settings[CURLOPT_PROTOCOLS] = CURLPROTO_HTTP | CURLPROTO_HTTPS;
        }
        // FIXME: CURLOPT_REDIR_PROTOCOLS is currently unsupported by HHVM
        if (defined('CURLOPT_REDIR_PROTOCOLS')) {
            $settings[CURLOPT_REDIR_PROTOCOLS] = CURLPROTO_HTTP | CURLPROTO_HTTPS;
        }

        return $settings;
    }
protected function createCurlSettingsArray ( RequestInterface $ request ) : array { $ settings = $ this -> curlSettings ; switch ( $ request -> getMethod ( ) ) { case 'HEAD' : $ settings [ CURLOPT_NOBODY ] = true ; $ settings [ CURLOPT_CUSTOMREQUEST ] = 'HEAD' ; break ; case 'GET' : $ settings [ CURLOPT_CUSTOMREQUEST ] = 'GET' ; break ; default : $ body = $ request -> getBody ( ) ; if ( is_resource ( $ body ) ) { // This needs to be set to PUT, regardless of the actual // method used. Without it, INFILE will be ignored for some // reason. $ settings [ CURLOPT_PUT ] = true ; $ settings [ CURLOPT_INFILE ] = $ request -> getBody ( ) ; } else { // For security we cast this to a string. If somehow an array could // be passed here, it would be possible for an attacker to use @ to // post local files. $ settings [ CURLOPT_POSTFIELDS ] = ( string ) $ body ; } $ settings [ CURLOPT_CUSTOMREQUEST ] = $ request -> getMethod ( ) ; break ; } $ nHeaders = [ ] ; foreach ( $ request -> getHeaders ( ) as $ key => $ values ) { foreach ( $ values as $ value ) { $ nHeaders [ ] = $ key . ': ' . $ value ; } } $ settings [ CURLOPT_HTTPHEADER ] = $ nHeaders ; $ settings [ CURLOPT_URL ] = $ request -> getUrl ( ) ; // FIXME: CURLOPT_PROTOCOLS is currently unsupported by HHVM if ( defined ( 'CURLOPT_PROTOCOLS' ) ) { $ settings [ CURLOPT_PROTOCOLS ] = CURLPROTO_HTTP | CURLPROTO_HTTPS ; } // FIXME: CURLOPT_REDIR_PROTOCOLS is currently unsupported by HHVM if ( defined ( 'CURLOPT_REDIR_PROTOCOLS' ) ) { $ settings [ CURLOPT_REDIR_PROTOCOLS ] = CURLPROTO_HTTP | CURLPROTO_HTTPS ; } return $ settings ; }
Turns a RequestInterface object into an array with settings that can be
fed to curl_setopt.
Turns a RequestInterface object into an array with settings that can be fed to curl_setopt .