mirror of
https://github.com/processwire/processwire.git
synced 2025-08-23 23:02:58 +02:00
Update WireHttp to support more HTTP response codes (the success ones, in addition to the existing error codes)
This commit is contained in:
@@ -1932,7 +1932,7 @@ class PageFinder extends Wire {
|
|||||||
$query->join($sql);
|
$query->join($sql);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$query->join("pages AS rootparent ON ($alias.parent_id=rootparent.id AND rootparent.id=1)");
|
$query->join("pages AS rootparent$n ON ($alias.parent_id=rootparent$n.id AND rootparent$n.id=1)");
|
||||||
}
|
}
|
||||||
$lastAlias = $alias;
|
$lastAlias = $alias;
|
||||||
}
|
}
|
||||||
|
@@ -81,7 +81,29 @@ class WireHttp extends Wire {
|
|||||||
* @var array
|
* @var array
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
protected $errorCodes = array(
|
protected $httpCodes = array(
|
||||||
|
100 => 'Continue',
|
||||||
|
101 => 'Switching Protocols',
|
||||||
|
102 => 'Processing (WebDAV; RFC 2518)',
|
||||||
|
200 => 'OK',
|
||||||
|
201 => 'Created',
|
||||||
|
202 => 'Accepted',
|
||||||
|
203 => 'Non-Authoritative Information',
|
||||||
|
204 => 'No Content',
|
||||||
|
205 => 'Reset Content',
|
||||||
|
206 => 'Partial Content',
|
||||||
|
207 => 'Multi-Status (WebDAV; RFC 4918)',
|
||||||
|
208 => 'Already Reported (WebDAV; RFC 5842)',
|
||||||
|
226 => 'IM Used (RFC 3229)',
|
||||||
|
300 => 'Multiple Choices',
|
||||||
|
301 => 'Moved Permanently',
|
||||||
|
302 => 'Found',
|
||||||
|
303 => 'See Other',
|
||||||
|
304 => 'Not Modified',
|
||||||
|
305 => 'Use Proxy',
|
||||||
|
306 => 'Switch Proxy',
|
||||||
|
307 => 'Temporary Redirect',
|
||||||
|
308 => 'Permanent Redirect',
|
||||||
400 => 'Bad Request',
|
400 => 'Bad Request',
|
||||||
401 => 'Unauthorized',
|
401 => 'Unauthorized',
|
||||||
402 => 'Payment Required',
|
402 => 'Payment Required',
|
||||||
@@ -319,8 +341,9 @@ class WireHttp extends Wire {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public function head($url, $data = array()) {
|
public function head($url, $data = array()) {
|
||||||
$responseHeader = $this->send($url, $data, 'HEAD');
|
$this->send($url, $data, 'HEAD');
|
||||||
return is_array($responseHeader) ? $responseHeader : false;
|
$responseHeaders = $this->getResponseHeaders();
|
||||||
|
return is_array($responseHeaders) ? $responseHeaders : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -489,7 +512,7 @@ class WireHttp extends Wire {
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
$code = $this->getHttpCode();
|
$code = $this->getHttpCode();
|
||||||
if($code && isset($this->errorCodes[$code])) {
|
if($code && $code >= 400 && isset($this->httpCodes[$code])) {
|
||||||
// known http error code, no need to fallback to sockets
|
// known http error code, no need to fallback to sockets
|
||||||
$result = false;
|
$result = false;
|
||||||
} else if($code && $code >= 200 && $code < 300) {
|
} else if($code && $code >= 200 && $code < 300) {
|
||||||
@@ -713,7 +736,7 @@ class WireHttp extends Wire {
|
|||||||
fclose($fp);
|
fclose($fp);
|
||||||
|
|
||||||
$methods = implode(", ", $triedMethods);
|
$methods = implode(", ", $triedMethods);
|
||||||
if(count($this->error) || isset($this->errorCodes[$this->httpCode])) {
|
if(count($this->error) || ($this->httpCode >= 400 && isset($this->httpCodes[$this->httpCode]))) {
|
||||||
unlink($toFile);
|
unlink($toFile);
|
||||||
$error = $this->_('File could not be downloaded') . ' ' . htmlentities("($fromURL) ") . $this->getError() . " (tried: $methods)";
|
$error = $this->_('File could not be downloaded') . ' ' . htmlentities("($fromURL) ") . $this->getError() . " (tried: $methods)";
|
||||||
throw new WireException($error);
|
throw new WireException($error);
|
||||||
@@ -919,7 +942,9 @@ class WireHttp extends Wire {
|
|||||||
$this->httpCode = (int) $httpCode;
|
$this->httpCode = (int) $httpCode;
|
||||||
$this->httpCodeText = $httpText;
|
$this->httpCodeText = $httpText;
|
||||||
|
|
||||||
if(isset($this->errorCodes[$this->httpCode])) $this->error[] = $this->errorCodes[$this->httpCode];
|
if($this->httpCode >= 400 && isset($this->httpCodes[$this->httpCode])) {
|
||||||
|
$this->error[] = $this->httpCodes[$this->httpCode];
|
||||||
|
}
|
||||||
|
|
||||||
// parsed version
|
// parsed version
|
||||||
$this->responseHeaders = array();
|
$this->responseHeaders = array();
|
||||||
@@ -1080,8 +1105,8 @@ class WireHttp extends Wire {
|
|||||||
*/
|
*/
|
||||||
public function getError($getArray = false) {
|
public function getError($getArray = false) {
|
||||||
$error = $getArray ? $this->error : implode(', ', $this->error);
|
$error = $getArray ? $this->error : implode(', ', $this->error);
|
||||||
if(isset($this->errorCodes[$this->httpCode])) {
|
if($this->httpCode >= 400 && isset($this->httpCodes[$this->httpCode])) {
|
||||||
$httpError = "$this->httpCode " . $this->errorCodes[$this->httpCode];
|
$httpError = "$this->httpCode " . $this->httpCodes[$this->httpCode];
|
||||||
if($getArray) {
|
if($getArray) {
|
||||||
array_unshift($error, $httpError);
|
array_unshift($error, $httpError);
|
||||||
} else {
|
} else {
|
||||||
@@ -1103,6 +1128,30 @@ class WireHttp extends Wire {
|
|||||||
return $this->httpCode;
|
return $this->httpCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return array of all possible HTTP codes as (code => description)
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function getHttpCodes() {
|
||||||
|
return $this->httpCodes;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return array of all possible HTTP success codes as (code => description)
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function getSuccessCodes() {
|
||||||
|
$codes = array();
|
||||||
|
foreach($this->httpCodes as $code => $text) {
|
||||||
|
if($code < 400) $codes[$code] = $text;
|
||||||
|
}
|
||||||
|
return $codes;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return array of all possible HTTP error codes as (code => description)
|
* Return array of all possible HTTP error codes as (code => description)
|
||||||
*
|
*
|
||||||
@@ -1110,7 +1159,11 @@ class WireHttp extends Wire {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public function getErrorCodes() {
|
public function getErrorCodes() {
|
||||||
return $this->errorCodes;
|
$errorCodes = array();
|
||||||
|
foreach($this->httpCodes as $code => $text) {
|
||||||
|
if($code >= 400) $errorCodes[$code] = $text;
|
||||||
|
}
|
||||||
|
return $errorCodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user