StorageModifierTrait.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. /**
  3. * @copyright Copyright (c) 2016, ownCloud, Inc.
  4. *
  5. * @author Robin McCorkell <robin@mccorkell.me.uk>
  6. * @author Roeland Jago Douma <roeland@famdouma.nl>
  7. *
  8. * @license AGPL-3.0
  9. *
  10. * This code is free software: you can redistribute it and/or modify
  11. * it under the terms of the GNU Affero General Public License, version 3,
  12. * as published by the Free Software Foundation.
  13. *
  14. * This program is distributed in the hope that it will be useful,
  15. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  17. * GNU Affero General Public License for more details.
  18. *
  19. * You should have received a copy of the GNU Affero General Public License, version 3,
  20. * along with this program. If not, see <http://www.gnu.org/licenses/>
  21. *
  22. */
  23. namespace OCA\Files_External\Lib;
  24. use OCP\Files\Storage;
  25. use OCP\Files\StorageNotAvailableException;
  26. use OCP\IUser;
  27. /**
  28. * Trait for objects that can modify StorageConfigs and wrap Storages
  29. *
  30. * When a storage implementation is being prepared for use, the StorageConfig
  31. * is passed through manipulateStorageConfig() to update any parameters as
  32. * necessary. After the storage implementation has been constructed, it is
  33. * passed through wrapStorage(), potentially replacing the implementation with
  34. * a wrapped storage that changes its behaviour.
  35. *
  36. * Certain configuration options need to be set before the implementation is
  37. * constructed, while others are retrieved directly from the storage
  38. * implementation and so need a wrapper to be modified.
  39. */
  40. trait StorageModifierTrait {
  41. /**
  42. * Modify a StorageConfig parameters
  43. *
  44. * @param StorageConfig $storage
  45. * @param IUser $user User the storage is being used as
  46. * @return void
  47. * @throws InsufficientDataForMeaningfulAnswerException
  48. * @throws StorageNotAvailableException
  49. */
  50. public function manipulateStorageConfig(StorageConfig &$storage, ?IUser $user = null) {
  51. }
  52. /**
  53. * Wrap a Storage if necessary
  54. *
  55. * @param Storage $storage
  56. * @return Storage
  57. * @throws InsufficientDataForMeaningfulAnswerException
  58. * @throws StorageNotAvailableException
  59. */
  60. public function wrapStorage(Storage $storage) {
  61. return $storage;
  62. }
  63. }