芝麻web文件管理V1.00
编辑当前文件:/home/qrafawbu/joolsmen.com/vendor/twilio/sdk/src/Twilio/Http/CurlClient.php
curlOptions = $options; $this->debugHttp = \getenv('DEBUG_HTTP_TRAFFIC') === 'true'; } public function request($method, $url, $params = array(), $data = array(), $headers = array(), $user = null, $password = null, $timeout = null) { $options = $this->options($method, $url, $params, $data, $headers, $user, $password, $timeout); $this->lastRequest = $options; $this->lastResponse = null; try { if (!$curl = \curl_init()) { throw new EnvironmentException('Unable to initialize cURL'); } if (!\curl_setopt_array($curl, $options)) { throw new EnvironmentException(\curl_error($curl)); } if (!$response = \curl_exec($curl)) { throw new EnvironmentException(\curl_error($curl)); } $parts = \explode("\r\n\r\n", $response, 3); list($head, $body) = ( \preg_match('/\AHTTP\/1.\d 100 Continue\Z/', $parts[0]) || \preg_match('/\AHTTP\/1.\d 200 Connection established\Z/', $parts[0]) || \preg_match('/\AHTTP\/1.\d 200 Tunnel established\Z/', $parts[0]) ) ? array($parts[1], $parts[2]) : array($parts[0], $parts[1]); if ($this->debugHttp) { $u = \parse_url($url); $hdrLine = $method . ' ' . $u['path']; if (isset($u['query']) && \strlen($u['query']) > 0 ) { $hdrLine = $hdrLine . '?' . $u['query']; } \error_log($hdrLine); foreach ($headers as $key => $value) { \error_log("$key: $value"); } if ($method === 'POST') { \error_log("\n" . $options[CURLOPT_POSTFIELDS] . "\n"); } } $statusCode = \curl_getinfo($curl, CURLINFO_HTTP_CODE); $responseHeaders = array(); $headerLines = \explode("\r\n", $head); \array_shift($headerLines); foreach ($headerLines as $line) { list($key, $value) = \explode(':', $line, 2); $responseHeaders[$key] = $value; } \curl_close($curl); if (isset($buffer) && \is_resource($buffer)) { \fclose($buffer); } if ($this->debugHttp) { \error_log("HTTP/1.1 $statusCode"); foreach ($responseHeaders as $key => $value) { \error_log("$key: $value"); } \error_log("\n$body"); } $this->lastResponse = new Response($statusCode, $body, $responseHeaders); return $this->lastResponse; } catch (\ErrorException $e) { if (isset($curl) && \is_resource($curl)) { \curl_close($curl); } if (isset($buffer) && \is_resource($buffer)) { \fclose($buffer); } throw $e; } } public function options($method, $url, $params = array(), $data = array(), $headers = array(), $user = null, $password = null, $timeout = null) { $timeout = \is_null($timeout) ? self::DEFAULT_TIMEOUT : $timeout; $options = $this->curlOptions + array( CURLOPT_URL => $url, CURLOPT_HEADER => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_INFILESIZE => Null, CURLOPT_HTTPHEADER => array(), CURLOPT_TIMEOUT => $timeout, ); foreach ($headers as $key => $value) { $options[CURLOPT_HTTPHEADER][] = "$key: $value"; } if ($user && $password) { $options[CURLOPT_HTTPHEADER][] = 'Authorization: Basic ' . \base64_encode("$user:$password"); } $body = $this->buildQuery($params); if ($body) { $options[CURLOPT_URL] .= '?' . $body; } switch (\strtolower(\trim($method))) { case 'get': $options[CURLOPT_HTTPGET] = true; break; case 'post': $options[CURLOPT_POST] = true; $options[CURLOPT_POSTFIELDS] = $this->buildQuery($data); break; case 'put': $options[CURLOPT_PUT] = true; if ($data) { if ($buffer = \fopen('php://memory', 'w+')) { $dataString = $this->buildQuery($data); \fwrite($buffer, $dataString); \fseek($buffer, 0); $options[CURLOPT_INFILE] = $buffer; $options[CURLOPT_INFILESIZE] = \strlen($dataString); } else { throw new EnvironmentException('Unable to open a temporary file'); } } break; case 'head': $options[CURLOPT_NOBODY] = true; break; default: $options[CURLOPT_CUSTOMREQUEST] = \strtoupper($method); } return $options; } public function buildQuery($params) { $parts = array(); if (\is_string($params)) { return $params; } $params = $params ?: array(); foreach ($params as $key => $value) { if (\is_array($value)) { foreach ($value as $item) { $parts[] = \urlencode((string)$key) . '=' . \urlencode((string)$item); } } else { $parts[] = \urlencode((string)$key) . '=' . \urlencode((string)$value); } } return \implode('&', $parts); } }