mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 11:28:25 +00:00
Using native methods to query in HttpSocket.
This commit is contained in:
parent
bcdf61a9d5
commit
fcd96bcc60
2 changed files with 3 additions and 64 deletions
|
@ -298,7 +298,7 @@ class HttpSocket extends CakeSocket {
|
||||||
$this->request['auth'] = $this->_auth;
|
$this->request['auth'] = $this->_auth;
|
||||||
|
|
||||||
if (is_array($this->request['body'])) {
|
if (is_array($this->request['body'])) {
|
||||||
$this->request['body'] = $this->_httpSerialize($this->request['body']);
|
$this->request['body'] = http_build_query($this->request['body']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($this->request['body']) && !isset($this->request['header']['Content-Type'])) {
|
if (!empty($this->request['body']) && !isset($this->request['header']['Content-Type'])) {
|
||||||
|
@ -623,7 +623,7 @@ class HttpSocket extends CakeSocket {
|
||||||
}
|
}
|
||||||
|
|
||||||
$uri['path'] = preg_replace('/^\//', null, $uri['path']);
|
$uri['path'] = preg_replace('/^\//', null, $uri['path']);
|
||||||
$uri['query'] = $this->_httpSerialize($uri['query']);
|
$uri['query'] = http_build_query($uri['query']);
|
||||||
$stripIfEmpty = array(
|
$stripIfEmpty = array(
|
||||||
'query' => '?%query',
|
'query' => '?%query',
|
||||||
'fragment' => '#%fragment',
|
'fragment' => '#%fragment',
|
||||||
|
@ -728,49 +728,7 @@ class HttpSocket extends CakeSocket {
|
||||||
if (is_array($query)) {
|
if (is_array($query)) {
|
||||||
return $query;
|
return $query;
|
||||||
}
|
}
|
||||||
$parsedQuery = array();
|
parse_str(ltrim($query, '?'), $parsedQuery);
|
||||||
|
|
||||||
if (is_string($query) && !empty($query)) {
|
|
||||||
$query = preg_replace('/^\?/', '', $query);
|
|
||||||
$items = explode('&', $query);
|
|
||||||
|
|
||||||
foreach ($items as $item) {
|
|
||||||
if (strpos($item, '=') !== false) {
|
|
||||||
list($key, $value) = explode('=', $item, 2);
|
|
||||||
} else {
|
|
||||||
$key = $item;
|
|
||||||
$value = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
$key = urldecode($key);
|
|
||||||
$value = urldecode($value);
|
|
||||||
|
|
||||||
if (preg_match_all('/\[([^\[\]]*)\]/iUs', $key, $matches)) {
|
|
||||||
$subKeys = $matches[1];
|
|
||||||
$rootKey = substr($key, 0, strpos($key, '['));
|
|
||||||
if (!empty($rootKey)) {
|
|
||||||
array_unshift($subKeys, $rootKey);
|
|
||||||
}
|
|
||||||
$queryNode =& $parsedQuery;
|
|
||||||
|
|
||||||
foreach ($subKeys as $subKey) {
|
|
||||||
if (!is_array($queryNode)) {
|
|
||||||
$queryNode = array();
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($subKey === '') {
|
|
||||||
$queryNode[] = array();
|
|
||||||
end($queryNode);
|
|
||||||
$subKey = key($queryNode);
|
|
||||||
}
|
|
||||||
$queryNode =& $queryNode[$subKey];
|
|
||||||
}
|
|
||||||
$queryNode = $value;
|
|
||||||
} else {
|
|
||||||
$parsedQuery[$key] = $value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $parsedQuery;
|
return $parsedQuery;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -811,22 +769,6 @@ class HttpSocket extends CakeSocket {
|
||||||
return $request['method'] . ' ' . $request['uri'] . ' ' . $versionToken . "\r\n";
|
return $request['method'] . ' ' . $request['uri'] . ' ' . $versionToken . "\r\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Serializes an array for transport.
|
|
||||||
*
|
|
||||||
* @param array $data Data to serialize
|
|
||||||
* @return string Serialized variable
|
|
||||||
*/
|
|
||||||
protected function _httpSerialize($data = array()) {
|
|
||||||
if (is_string($data)) {
|
|
||||||
return $data;
|
|
||||||
}
|
|
||||||
if (empty($data) || !is_array($data)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return substr(Router::queryString($data), 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builds the header.
|
* Builds the header.
|
||||||
*
|
*
|
||||||
|
|
|
@ -1284,9 +1284,6 @@ class HttpSocketTest extends CakeTestCase {
|
||||||
$query = $this->Socket->parseQuery('a[]=foo&a[]=bar&a[]=cake');
|
$query = $this->Socket->parseQuery('a[]=foo&a[]=bar&a[]=cake');
|
||||||
$this->assertEquals($query, array('a' => array(0 => 'foo', 1 => 'bar', 2 => 'cake')));
|
$this->assertEquals($query, array('a' => array(0 => 'foo', 1 => 'bar', 2 => 'cake')));
|
||||||
|
|
||||||
$query = $this->Socket->parseQuery('a]][[=foo&[]=bar&]]][]=cake');
|
|
||||||
$this->assertEquals($query, array('a]][[' => 'foo', 0 => 'bar', ']]]' => array('cake')));
|
|
||||||
|
|
||||||
$query = $this->Socket->parseQuery('a[][]=foo&a[][]=bar&a[][]=cake');
|
$query = $this->Socket->parseQuery('a[][]=foo&a[][]=bar&a[][]=cake');
|
||||||
$expectedQuery = array(
|
$expectedQuery = array(
|
||||||
'a' => array(
|
'a' => array(
|
||||||
|
|
Loading…
Reference in a new issue