Ejemplo n.º 1
0
 /**
  * Set a curl option for the request.
  *
  * See: http://php.net/manual/en/function.curl-setopt.php
  *
  * @param int $key The option to set.
  * @param mixed $value The value of the option.
  */
 private function setOption($key, $value)
 {
     switch ($key) {
         // Cases that we support.
         case CURLOPT_FOLLOWLOCATION:
             $this->request->setFollowRedirects($value);
             break;
         case CURLOPT_HTTPGET:
             $this->request->setMethod(RequestMethod::GET);
             break;
         case CURLOPT_NOBODY:
             $this->request->setMethod(RequestMethod::HEAD);
             break;
         case CURLOPT_POST:
             $this->request->setMethod(RequestMethod::POST);
             break;
         case CURLOPT_PUT:
             $this->request->setMethod(RequestMethod::PUT);
             break;
         case CURLOPT_SSL_VERIFYPEER:
             $this->request->setMustValidateServerCertificate($value);
             break;
         case CURLOPT_TIMEOUT:
             $this->request->setDeadline($value);
             break;
         case CURLOPT_TIMEOUT_MS:
             $this->request->setDeadline($value * 1000);
             break;
         case CURLOPT_CUSTOMREQUEST:
             if (!in_array($value, array_keys(static::$custom_request_map))) {
                 throw new CurlLiteOptionNotSupportedException('Custom request ' . $value . ' not supported by this curl ' . 'implementation.');
             }
             $this->request->setMethod(static::$custom_request_map[$value]);
             break;
         case CURLOPT_RANGE:
             $this->headers['Range'] = $value;
             break;
         case CURLOPT_REFERER:
             $this->headers['Referer'] = $value;
             $break;
         case CURLOPT_URL:
             $this->setRequestUrl($value);
             break;
         case CURLOPT_USERAGENT:
             $this->headers['User-Agent'] = $value;
             break;
         case CURLOPT_COOKIE:
             $this->headers['Cookie'] = $value;
             break;
         case CURLOPT_HTTPHEADER:
             $this->headers = ArrayUtil::arrayMergeIgnoreCase($this->headers, $this->parseHttpHeaders($value));
             break;
             // Cases that we don't support, that could cause a semantic change in the
             // application by not supporting.
         // Cases that we don't support, that could cause a semantic change in the
         // application by not supporting.
         case CURLOPT_COOKIESESSION:
         case CURLOPT_CERTINFO:
         case CURLOPT_CONNECT_ONLY:
         case CURLOPT_FTP_USE_EPRT:
         case CURLOPT_FTP_USE_EPSV:
         case CURLOPT_FTP_CREATE_MISSING_DIRS:
         case CURLOPT_FTPAPPEND:
         case CURLOPT_FTPLISTONLY:
         case CURLOPT_HTTPPROXYTUNNEL:
         case CURLOPT_NETRC:
         case CURLOPT_NOSIGNAL:
         case CURLOPT_SAFE_UPLOAD:
         case CURLOPT_TRANSFERTEXT:
         case CURLOPT_FTPSSLAUTH:
         case CURLOPT_TIMEVALUE:
         case CURLOPT_CAINFO:
         case CURLOPT_COOKIEJAR:
         case CURLOPT_FTPPORT:
         case CURLOPT_KEYPASSWD:
         case CURLOPT_KRB4LEVEL:
         case CURLOPT_SSH_HOST_PUBLIC_KEY_MD5:
         case CURLOPT_SSH_PUBLIC_KEYFILE:
         case CURLOPT_SSH_PRIVATE_KEYFILE:
         case CURLOPT_SSLCERT:
         case CURLOPT_SSLCERTPASSWD:
         case CURLOPT_SSLCERTTYPE:
         case CURLOPT_SSLENGINE:
         case CURLOPT_SSLENGINE_DEFAULT:
         case CURLOPT_SSLKEY:
         case CURLOPT_SSLKEYPASSWD:
         case CURLOPT_SSLKEYTYPE:
         case CURLOPT_POSTQUOTE:
         case CURLOPT_QUOTE:
         case CURLOPT_PROGRESSFUNCTION:
         case CURLOPT_SHARE:
             throw new CurlLiteOptionNotSupportedException('Option ' . $key . ' is not supported by this curl implementation.');
             // Everything else is a no-op, or will be configured at request time.
         // Everything else is a no-op, or will be configured at request time.
         default:
     }
     $this->options[$key] = $value;
     return true;
 }