mirror of
https://github.com/nextcloud/server.git
synced 2026-05-28 04:32:30 -04:00
AmazonS3: allow not implemented versioning
In case the S3 implementation does not implement versioning, set it to
false. Versioning was introduced in Nexcloud in commit
09ffac5e6d
This is needed for compatibility with the Storj gateway.
Signed-off-by: Erik van Velzen <erik@evanv.nl>
This commit is contained in:
parent
bf75b1d5c5
commit
17f3e5e4b5
1 changed files with 14 additions and 2 deletions
|
|
@ -732,8 +732,7 @@ class AmazonS3 extends \OC\Files\Storage\Common {
|
|||
if ($this->versioningEnabled === null) {
|
||||
$cached = $this->memCache->get('versioning-enabled::' . $this->getBucket());
|
||||
if ($cached === null) {
|
||||
$result = $this->getConnection()->getBucketVersioning(['Bucket' => $this->getBucket()]);
|
||||
$this->versioningEnabled = $result->get('Status') === 'Enabled';
|
||||
$this->versioningEnabled = $this->getVersioningStatusFromBucket();
|
||||
$this->memCache->set('versioning-enabled::' . $this->getBucket(), $this->versioningEnabled, 60);
|
||||
} else {
|
||||
$this->versioningEnabled = $cached;
|
||||
|
|
@ -742,6 +741,19 @@ class AmazonS3 extends \OC\Files\Storage\Common {
|
|||
return $this->versioningEnabled;
|
||||
}
|
||||
|
||||
protected function getVersioningStatusFromBucket(): bool {
|
||||
try {
|
||||
$result = $this->getConnection()->getBucketVersioning(['Bucket' => $this->getBucket()]);
|
||||
return $result->get('Status') === 'Enabled';
|
||||
} catch (S3Exception $s3Exception) {
|
||||
// This is needed for compatibility with Storj gateway which does not support versioning yet
|
||||
if ($s3Exception->getAwsErrorCode() === 'NotImplemented') {
|
||||
return false;
|
||||
}
|
||||
throw $s3Exception;
|
||||
}
|
||||
}
|
||||
|
||||
public function hasUpdated($path, $time) {
|
||||
// for files we can get the proper mtime
|
||||
if ($path !== '' && $object = $this->headObject($path)) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue