0byt3m1n1 - D7net
0byt3m1n1 - D7net
Path:
/
home
/
s13cf5ef
/
www
/
tuscamisetaspersonalizadas
/
libraries
/
joomla
/
http
/
transport
/
[
Home
]
Name File: curl.php
< back
<?php /** * @package Joomla.Platform * @subpackage HTTP * * @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('JPATH_PLATFORM') or die(); /** * HTTP transport class for using cURL. * * @package Joomla.Platform * @subpackage HTTP * @since 11.3 */ class JHttpTransportCurl implements JHttpTransport { /** * @var JRegistry The client options. * @since 11.3 */ protected $options; /** * Constructor. * * @param JRegistry &$options Client options object. * * @since 11.3 * @throws RuntimeException */ public function __construct(JRegistry &$options) { if (!function_exists('curl_init') || !is_callable('curl_init')) { throw new RuntimeException('Cannot use a cURL transport when curl_init() is not available.'); } $this->options = $options; } /** * Send a request to the server and return a JHttpResponse object with the response. * * @param string $method The HTTP method for sending the request. * @param JUri $uri The URI to the resource to request. * @param mixed $data Either an associative array or a string to be sent with the request. * @param array $headers An array of request headers to send with the request. * @param integer $timeout Read timeout in seconds. * @param string $userAgent The optional user agent string to send with the request. * * @return JHttpResponse * * @since 11.3 */ public function request($method, JUri $uri, $data = null, array $headers = null, $timeout = null, $userAgent = null) { // Setup the cURL handle. $ch = curl_init(); // Set the request method. $options[CURLOPT_CUSTOMREQUEST] = strtoupper($method); // Initialize the certificate store $options[CURLOPT_CAINFO] = dirname(__FILE__) . '/cacert.pem'; // If data exists let's encode it and make sure our Content-type header is set. if (isset($data)) { // If the data is a scalar value simply add it to the cURL post fields. if (is_scalar($data)) { $options[CURLOPT_POSTFIELDS] = $data; } // Otherwise we need to encode the value first. else { $options[CURLOPT_POSTFIELDS] = http_build_query($data); } if (!isset($headers['Content-type'])) { $headers['Content-type'] = 'application/x-www-form-urlencoded'; } $headers['Content-length'] = strlen($options[CURLOPT_POSTFIELDS]); } // Build the headers string for the request. $headerArray = array(); if (isset($headers)) { foreach ($headers as $key => $value) { $headerArray[] = $key . ': ' . $value; } // Add the headers string into the stream context options array. $options[CURLOPT_HTTPHEADER] = $headerArray; } // If an explicit timeout is given user it. if (isset($timeout)) { $options[CURLOPT_TIMEOUT] = (int) $timeout; $options[CURLOPT_CONNECTTIMEOUT] = (int) $timeout; } // If an explicit user agent is given use it. if (isset($userAgent)) { $headers[CURLOPT_USERAGENT] = $userAgent; } // Set the request URL. $options[CURLOPT_URL] = (string) $uri; // We want our headers. :-) $options[CURLOPT_HEADER] = true; // Return it... echoing it would be tacky. $options[CURLOPT_RETURNTRANSFER] = true; // Set the cURL options. curl_setopt_array($ch, $options); // Execute the request and close the connection. $content = curl_exec($ch); curl_close($ch); return $this->getResponse($content); } /** * Method to get a response object from a server response. * * @param string $content The complete server response, including headers. * * @return JHttpResponse * * @since 11.3 * @throws UnexpectedValueException */ protected function getResponse($content) { // Create the response object. $return = new JHttpResponse; // Split the response into headers and body. $response = explode("\r\n\r\n", $content, 2); // Get the response headers as an array. $headers = explode("\r\n", $response[0]); // Set the body for the response. $return->body = $response[1]; // Get the response code from the first offset of the response headers. preg_match('/[0-9]{3}/', array_shift($headers), $matches); $code = $matches[0]; if (is_numeric($code)) { $return->code = (int) $code; } // No valid response code was detected. else { throw new UnexpectedValueException('No HTTP response code found.'); } // Add the response headers to the response object. foreach ($headers as $header) { $pos = strpos($header, ':'); $return->headers[trim(substr($header, 0, $pos))] = trim(substr($header, ($pos + 1))); } return $return; } }
©
2018. | Recode by D7net