diff options
Diffstat (limited to 'apps/files_external/lib/Lib/StorageModifierTrait.php')
-rw-r--r-- | apps/files_external/lib/Lib/StorageModifierTrait.php | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/apps/files_external/lib/Lib/StorageModifierTrait.php b/apps/files_external/lib/Lib/StorageModifierTrait.php new file mode 100644 index 00000000000..4062ff1635e --- /dev/null +++ b/apps/files_external/lib/Lib/StorageModifierTrait.php @@ -0,0 +1,50 @@ +<?php + +/** + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only + */ +namespace OCA\Files_External\Lib; + +use OCP\Files\Storage\IStorage; +use OCP\Files\StorageNotAvailableException; +use OCP\IUser; + +/** + * Trait for objects that can modify StorageConfigs and wrap Storages + * + * When a storage implementation is being prepared for use, the StorageConfig + * is passed through manipulateStorageConfig() to update any parameters as + * necessary. After the storage implementation has been constructed, it is + * passed through wrapStorage(), potentially replacing the implementation with + * a wrapped storage that changes its behaviour. + * + * Certain configuration options need to be set before the implementation is + * constructed, while others are retrieved directly from the storage + * implementation and so need a wrapper to be modified. + */ +trait StorageModifierTrait { + + /** + * Modify a StorageConfig parameters + * + * @param StorageConfig &$storage + * @param ?IUser $user User the storage is being used as + * @return void + * @throws InsufficientDataForMeaningfulAnswerException + * @throws StorageNotAvailableException + */ + public function manipulateStorageConfig(StorageConfig &$storage, ?IUser $user = null) { + } + + /** + * Wrap a storage if necessary + * + * @throws InsufficientDataForMeaningfulAnswerException + * @throws StorageNotAvailableException + */ + public function wrapStorage(IStorage $storage): IStorage { + return $storage; + } +} |