PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /home/trave494/princesspicnicevents.com/wp-content/plugins/updraftplus/includes/Google/IO/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : //home/trave494/princesspicnicevents.com/wp-content/plugins/updraftplus/includes/Google/IO/Curl.php |
<?php /* * Copyright 2014 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Curl based implementation of Google_IO. * * @author Stuart Langley <slangley@google.com> */ if (!class_exists('UDP_Google_Client')) { require_once dirname(__FILE__) . '/../autoload.php'; } class UDP_Google_IO_Curl extends UDP_Google_IO_Abstract { // cURL hex representation of version 7.30.0 const NO_QUIRK_VERSION = 0x071E00; private $options = array(); public function __construct(UDP_Google_Client $client) { if (!extension_loaded('curl')) { $error = 'The cURL IO handler requires the cURL extension to be enabled'; $client->getLogger()->critical($error); throw new UDP_Google_IO_Exception($error); } parent::__construct($client); } /** * Execute an HTTP Request * * @param Google_Http_Request $request the http request to be executed * @return array containing response headers, body, and http code * @throws UDP_Google_IO_Exception on curl or IO error */ public function executeRequest(UDP_Google_Http_Request $request) { $curl = curl_init(); if ($request->getPostBody()) { curl_setopt($curl, CURLOPT_POSTFIELDS, $request->getPostBody()); } $requestHeaders = $request->getRequestHeaders(); if ($requestHeaders && is_array($requestHeaders)) { $curlHeaders = array(); foreach ($requestHeaders as $k => $v) { $curlHeaders[] = "$k: $v"; } curl_setopt($curl, CURLOPT_HTTPHEADER, $curlHeaders); } curl_setopt($curl, CURLOPT_URL, $request->getUrl()); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $request->getRequestMethod()); curl_setopt($curl, CURLOPT_USERAGENT, $request->getUserAgent()); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true); // 1 is CURL_SSLVERSION_TLSv1, which is not always defined in PHP. // UpdraftPlus patch // The SDK leaves this on the default setting in later releases // curl_setopt($curl, CURLOPT_SSLVERSION, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HEADER, true); if ($request->canGzip()) { curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate'); } $options = $this->client->getClassConfig('UDP_Google_IO_Curl', 'options'); if (is_array($options)) { $this->setOptions($options); } foreach ($this->options as $key => $var) { curl_setopt($curl, $key, $var); } if (!isset($this->options[CURLOPT_CAINFO])) { curl_setopt($curl, CURLOPT_CAINFO, dirname(__FILE__) . '/cacerts.pem'); } $this->client->getLogger()->debug( 'cURL request', array( 'url' => $request->getUrl(), 'method' => $request->getRequestMethod(), 'headers' => $requestHeaders, 'body' => $request->getPostBody() ) ); $response = curl_exec($curl); if ($response === false) { $error = curl_error($curl); $code = curl_errno($curl); $map = $this->client->getClassConfig('UDP_Google_IO_Exception', 'retry_map'); $this->client->getLogger()->error('cURL ' . $error); throw new UDP_Google_IO_Exception($error, $code, null, $map); } $headerSize = curl_getinfo($curl, CURLINFO_HEADER_SIZE); list($responseHeaders, $responseBody) = $this->parseHttpResponse($response, $headerSize); $responseCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); $this->client->getLogger()->debug( 'cURL response', array( 'code' => $responseCode, 'headers' => $responseHeaders, 'body' => $responseBody, ) ); return array($responseBody, $responseHeaders, $responseCode); } /** * Set options that update the transport implementation's behavior. * @param $options */ public function setOptions($options) { $this->options = $options + $this->options; } /** * Set the maximum request time in seconds. * @param $timeout in seconds */ public function setTimeout($timeout) { // Since this timeout is really for putting a bound on the time // we'll set them both to the same. If you need to specify a longer // CURLOPT_TIMEOUT, or a higher CONNECTTIMEOUT, the best thing to // do is use the setOptions method for the values individually. $this->options[CURLOPT_CONNECTTIMEOUT] = $timeout; $this->options[CURLOPT_TIMEOUT] = $timeout; } /** * Get the maximum request time in seconds. * @return timeout in seconds */ public function getTimeout() { return $this->options[CURLOPT_TIMEOUT]; } /** * Test for the presence of a cURL header processing bug * * {@inheritDoc} * * @return boolean */ protected function needsQuirk() { $ver = curl_version(); $versionNum = $ver['version_number']; return $versionNum < UDP_Google_IO_Curl::NO_QUIRK_VERSION; } }