mirror of
https://github.com/nextcloud/server.git
synced 2026-04-21 06:08:46 -04:00
Use HTTPClient instead of file_get_contents
Allows us to catch exceptions like 404's and thus prevents stuff like:
```
{"reqId":"fnmS0hc+fL4+WXKAruo5","remoteAddr":"192.168.39.100","app":"PHP","message":"file_get_contents(http:\/\/ckamm.blaucloud.de\/\/status.php): failed to open stream: HTTP request failed! HTTP\/1.1 404 Not Found\r\n at \/var\/www\/owncloud\/apps\/files_sharing\/lib\/external\/storage.php#260","level":3,"time":"2016-03-08T21:00:33+00:00","method":"PROPFIND","url":"\/remote.php\/webdav\/"}
```
This commit is contained in:
parent
8c8ff0eae7
commit
8214fae9ae
1 changed files with 23 additions and 27 deletions
50
apps/files_sharing/lib/external/storage.php
vendored
50
apps/files_sharing/lib/external/storage.php
vendored
|
|
@ -25,6 +25,8 @@
|
|||
|
||||
namespace OCA\Files_Sharing\External;
|
||||
|
||||
use GuzzleHttp\Exception\ClientException;
|
||||
use GuzzleHttp\Exception\ConnectException;
|
||||
use OC\Files\Storage\DAV;
|
||||
use OC\ForbiddenException;
|
||||
use OCA\FederatedFileSharing\DiscoveryManager;
|
||||
|
|
@ -34,36 +36,21 @@ use OCP\Files\StorageInvalidException;
|
|||
use OCP\Files\StorageNotAvailableException;
|
||||
|
||||
class Storage extends DAV implements ISharedStorage {
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
/** @var string */
|
||||
private $remoteUser;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
/** @var string */
|
||||
private $remote;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
/** @var string */
|
||||
private $mountPoint;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
/** @var string */
|
||||
private $token;
|
||||
|
||||
/**
|
||||
* @var \OCP\ICacheFactory
|
||||
*/
|
||||
/** @var \OCP\ICacheFactory */
|
||||
private $memcacheFactory;
|
||||
|
||||
/**
|
||||
* @var \OCP\ICertificateManager
|
||||
*/
|
||||
/** @var \OCP\Http\Client\IClientService */
|
||||
private $httpClient;
|
||||
/** @var \OCP\ICertificateManager */
|
||||
private $certificateManager;
|
||||
|
||||
/** @var bool */
|
||||
private $updateChecked = false;
|
||||
|
||||
/**
|
||||
|
|
@ -73,6 +60,7 @@ class Storage extends DAV implements ISharedStorage {
|
|||
|
||||
public function __construct($options) {
|
||||
$this->memcacheFactory = \OC::$server->getMemCacheFactory();
|
||||
$this->httpClient = \OC::$server->getHTTPClientService();
|
||||
$discoveryManager = new DiscoveryManager(
|
||||
$this->memcacheFactory,
|
||||
\OC::$server->getHTTPClientService()
|
||||
|
|
@ -257,9 +245,17 @@ class Storage extends DAV implements ISharedStorage {
|
|||
return (bool)$result;
|
||||
}
|
||||
|
||||
$result = file_get_contents($url);
|
||||
$data = json_decode($result);
|
||||
$returnValue = (is_object($data) and !empty($data->version));
|
||||
$client = $this->httpClient->newClient();
|
||||
try {
|
||||
$result = $client->get($url)->getBody();
|
||||
$data = json_decode($result);
|
||||
$returnValue = (is_object($data) && !empty($data->version));
|
||||
} catch (ConnectException $e) {
|
||||
$returnValue = false;
|
||||
} catch (ClientException $e) {
|
||||
$returnValue = false;
|
||||
}
|
||||
|
||||
$cache->set($url, $returnValue);
|
||||
return $returnValue;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue