diff options
Diffstat (limited to 'apps/files_sharing')
9 files changed, 70 insertions, 63 deletions
diff --git a/apps/files_sharing/lib/Controller/DeletedShareAPIController.php b/apps/files_sharing/lib/Controller/DeletedShareAPIController.php index 9f80d285d4d..8d93afa4e04 100644 --- a/apps/files_sharing/lib/Controller/DeletedShareAPIController.php +++ b/apps/files_sharing/lib/Controller/DeletedShareAPIController.php @@ -135,7 +135,7 @@ class DeletedShareAPIController extends OCSController { /** * Get a list of all deleted shares * - * @return DataResponse<Http::STATUS_OK, Files_SharingDeletedShare[], array{}> + * @return DataResponse<Http::STATUS_OK, list<Files_SharingDeletedShare>, array{}> * * 200: Deleted shares returned */ @@ -148,9 +148,9 @@ class DeletedShareAPIController extends OCSController { $shares = array_merge($groupShares, $roomShares, $deckShares, $sciencemeshShares); - $shares = array_map(function (IShare $share) { + $shares = array_values(array_map(function (IShare $share) { return $this->formatShare($share); - }, $shares); + }, $shares)); return new DataResponse($shares); } @@ -159,7 +159,7 @@ class DeletedShareAPIController extends OCSController { * Undelete a deleted share * * @param string $id ID of the share - * @return DataResponse<Http::STATUS_OK, array<empty>, array{}> + * @return DataResponse<Http::STATUS_OK, list<empty>, array{}> * @throws OCSException * @throws OCSNotFoundException Share not found * diff --git a/apps/files_sharing/lib/Controller/PublicPreviewController.php b/apps/files_sharing/lib/Controller/PublicPreviewController.php index da71aca904c..8e8ee3768cb 100644 --- a/apps/files_sharing/lib/Controller/PublicPreviewController.php +++ b/apps/files_sharing/lib/Controller/PublicPreviewController.php @@ -62,7 +62,7 @@ class PublicPreviewController extends PublicShareController { * @param int $x Width of the preview * @param int $y Height of the preview * @param bool $a Whether to not crop the preview - * @return FileDisplayResponse<Http::STATUS_OK, array{Content-Type: string}>|DataResponse<Http::STATUS_BAD_REQUEST|Http::STATUS_FORBIDDEN|Http::STATUS_NOT_FOUND, array<empty>, array{}> + * @return FileDisplayResponse<Http::STATUS_OK, array{Content-Type: string}>|DataResponse<Http::STATUS_BAD_REQUEST|Http::STATUS_FORBIDDEN|Http::STATUS_NOT_FOUND, list<empty>, array{}> * * 200: Preview returned * 400: Getting preview is not possible @@ -134,7 +134,7 @@ class PublicPreviewController extends PublicShareController { * Get a direct link preview for a shared file * * @param string $token Token of the share - * @return FileDisplayResponse<Http::STATUS_OK, array{Content-Type: string}>|DataResponse<Http::STATUS_BAD_REQUEST|Http::STATUS_FORBIDDEN|Http::STATUS_NOT_FOUND, array<empty>, array{}> + * @return FileDisplayResponse<Http::STATUS_OK, array{Content-Type: string}>|DataResponse<Http::STATUS_BAD_REQUEST|Http::STATUS_FORBIDDEN|Http::STATUS_NOT_FOUND, list<empty>, array{}> * * 200: Preview returned * 400: Getting preview is not possible diff --git a/apps/files_sharing/lib/Controller/RemoteController.php b/apps/files_sharing/lib/Controller/RemoteController.php index cdac35e0d9c..e23ae51f219 100644 --- a/apps/files_sharing/lib/Controller/RemoteController.php +++ b/apps/files_sharing/lib/Controller/RemoteController.php @@ -41,7 +41,7 @@ class RemoteController extends OCSController { /** * Get list of pending remote shares * - * @return DataResponse<Http::STATUS_OK, Files_SharingRemoteShare[], array{}> + * @return DataResponse<Http::STATUS_OK, list<Files_SharingRemoteShare>, array{}> * * 200: Pending remote shares returned */ @@ -54,7 +54,7 @@ class RemoteController extends OCSController { * Accept a remote share * * @param int $id ID of the share - * @return DataResponse<Http::STATUS_OK, array<empty>, array{}> + * @return DataResponse<Http::STATUS_OK, list<empty>, array{}> * @throws OCSNotFoundException Share not found * * 200: Share accepted successfully @@ -75,7 +75,7 @@ class RemoteController extends OCSController { * Decline a remote share * * @param int $id ID of the share - * @return DataResponse<Http::STATUS_OK, array<empty>, array{}> + * @return DataResponse<Http::STATUS_OK, list<empty>, array{}> * @throws OCSNotFoundException Share not found * * 200: Share declined successfully @@ -116,14 +116,14 @@ class RemoteController extends OCSController { /** * Get a list of accepted remote shares * - * @return DataResponse<Http::STATUS_OK, Files_SharingRemoteShare[], array{}> + * @return DataResponse<Http::STATUS_OK, list<Files_SharingRemoteShare>, array{}> * * 200: Accepted remote shares returned */ #[NoAdminRequired] public function getShares() { $shares = $this->externalManager->getAcceptedShares(); - $shares = array_map('self::extendShareInfo', $shares); + $shares = array_map(self::extendShareInfo(...), $shares); return new DataResponse($shares); } @@ -153,7 +153,7 @@ class RemoteController extends OCSController { * Unshare a remote share * * @param int $id ID of the share - * @return DataResponse<Http::STATUS_OK, array<empty>, array{}> + * @return DataResponse<Http::STATUS_OK, list<empty>, array{}> * @throws OCSNotFoundException Share not found * @throws OCSForbiddenException Unsharing is not possible * diff --git a/apps/files_sharing/lib/Controller/ShareAPIController.php b/apps/files_sharing/lib/Controller/ShareAPIController.php index 077eb4b35a3..71f73f777a5 100644 --- a/apps/files_sharing/lib/Controller/ShareAPIController.php +++ b/apps/files_sharing/lib/Controller/ShareAPIController.php @@ -351,10 +351,10 @@ class ShareAPIController extends OCSController { /** - * @param array $shares - * @param array|null $updatedDisplayName + * @param list<Files_SharingShare> $shares + * @param array<string, string>|null $updatedDisplayName * - * @return array + * @return list<Files_SharingShare> */ private function fixMissingDisplayName(array $shares, ?array $updatedDisplayName = null): array { $userIds = $updated = []; @@ -450,7 +450,7 @@ class ShareAPIController extends OCSController { * * @param string $id ID of the share * @param bool $include_tags Include tags in the share - * @return DataResponse<Http::STATUS_OK, Files_SharingShare, array{}> + * @return DataResponse<Http::STATUS_OK, list<Files_SharingShare>, array{}> * @throws OCSNotFoundException Share not found * * 200: Share returned @@ -468,7 +468,7 @@ class ShareAPIController extends OCSController { $share = $this->formatShare($share); if ($include_tags) { - $share = Helper::populateTags([$share], 'file_source', \OC::$server->getTagManager()); + $share = Helper::populateTags([$share], \OC::$server->getTagManager()); } else { $share = [$share]; } @@ -486,7 +486,7 @@ class ShareAPIController extends OCSController { * Delete a share * * @param string $id ID of the share - * @return DataResponse<Http::STATUS_OK, array<empty>, array{}> + * @return DataResponse<Http::STATUS_OK, list<empty>, array{}> * @throws OCSNotFoundException Share not found * @throws OCSForbiddenException Missing permissions to delete the share * @@ -828,7 +828,7 @@ class ShareAPIController extends OCSController { * @param null|Node $node * @param boolean $includeTags * - * @return Files_SharingShare[] + * @return list<Files_SharingShare> */ private function getSharedWithMe($node, bool $includeTags): array { $userShares = $this->shareManager->getSharedWith($this->userId, IShare::TYPE_USER, $node, -1, 0); @@ -856,7 +856,7 @@ class ShareAPIController extends OCSController { } if ($includeTags) { - $formatted = Helper::populateTags($formatted, 'file_source', \OC::$server->getTagManager()); + $formatted = Helper::populateTags($formatted, \OC::$server->getTagManager()); } return $formatted; @@ -865,7 +865,7 @@ class ShareAPIController extends OCSController { /** * @param Node $folder * - * @return Files_SharingShare[] + * @return list<Files_SharingShare> * @throws OCSBadRequestException * @throws NotFoundException */ @@ -925,7 +925,7 @@ class ShareAPIController extends OCSController { * @param string $path Get shares for a specific path * @param string $include_tags Include tags in the share * - * @return DataResponse<Http::STATUS_OK, Files_SharingShare[], array{}> + * @return DataResponse<Http::STATUS_OK, list<Files_SharingShare>, array{}> * @throws OCSNotFoundException The folder was not found or is inaccessible * * 200: Shares returned @@ -974,7 +974,7 @@ class ShareAPIController extends OCSController { * @param bool $subFiles * @param bool $includeTags * - * @return Files_SharingShare[] + * @return list<Files_SharingShare> * @throws NotFoundException * @throws OCSBadRequestException */ @@ -1045,7 +1045,7 @@ class ShareAPIController extends OCSController { if ($includeTags) { $formatted = - Helper::populateTags($formatted, 'file_source', \OC::$server->getTagManager()); + Helper::populateTags($formatted, \OC::$server->getTagManager()); } return $formatted; @@ -1057,7 +1057,7 @@ class ShareAPIController extends OCSController { * * @param string $path Path all shares will be relative to * - * @return DataResponse<Http::STATUS_OK, Files_SharingShare[], array{}> + * @return DataResponse<Http::STATUS_OK, list<Files_SharingShare>, array{}> * @throws InvalidPathException * @throws NotFoundException * @throws OCSNotFoundException The given path is invalid @@ -1371,7 +1371,7 @@ class ShareAPIController extends OCSController { /** * Get all shares that are still pending * - * @return DataResponse<Http::STATUS_OK, Files_SharingShare[], array{}> + * @return DataResponse<Http::STATUS_OK, list<Files_SharingShare>, array{}> * * 200: Pending shares returned */ @@ -1394,7 +1394,7 @@ class ShareAPIController extends OCSController { } } - $result = array_filter(array_map(function (IShare $share) { + $result = array_values(array_filter(array_map(function (IShare $share) { $userFolder = $this->rootFolder->getUserFolder($share->getSharedBy()); $node = $userFolder->getFirstNodeById($share->getNodeId()); if (!$node) { @@ -1415,7 +1415,7 @@ class ShareAPIController extends OCSController { } }, $pendingShares), function ($entry) { return $entry !== null; - }); + })); return new DataResponse($result); } @@ -1424,7 +1424,7 @@ class ShareAPIController extends OCSController { * Accept a share * * @param string $id ID of the share - * @return DataResponse<Http::STATUS_OK, array<empty>, array{}> + * @return DataResponse<Http::STATUS_OK, list<empty>, array{}> * @throws OCSNotFoundException Share not found * @throws OCSException * @throws OCSBadRequestException Share could not be accepted @@ -2095,7 +2095,7 @@ class ShareAPIController extends OCSController { * @throws OCSForbiddenException You are not allowed to send mail notifications * @throws OCSBadRequestException Invalid request or wrong password * @throws OCSException Error while sending mail notification - * @return DataResponse<Http::STATUS_OK, array<empty>, array{}> + * @return DataResponse<Http::STATUS_OK, list<empty>, array{}> * * 200: The email notification was sent successfully */ diff --git a/apps/files_sharing/lib/Controller/ShareInfoController.php b/apps/files_sharing/lib/Controller/ShareInfoController.php index 05816a986f7..7805973f3c5 100644 --- a/apps/files_sharing/lib/Controller/ShareInfoController.php +++ b/apps/files_sharing/lib/Controller/ShareInfoController.php @@ -48,7 +48,7 @@ class ShareInfoController extends ApiController { * @param string|null $password Password of the share * @param string|null $dir Subdirectory to get info about * @param int $depth Maximum depth to get info about - * @return JSONResponse<Http::STATUS_OK, Files_SharingShareInfo, array{}>|JSONResponse<Http::STATUS_FORBIDDEN|Http::STATUS_NOT_FOUND, array<empty>, array{}> + * @return JSONResponse<Http::STATUS_OK, Files_SharingShareInfo, array{}>|JSONResponse<Http::STATUS_FORBIDDEN|Http::STATUS_NOT_FOUND, list<empty>, array{}> * * 200: Share info returned * 403: Getting share info is not allowed diff --git a/apps/files_sharing/lib/Controller/ShareesAPIController.php b/apps/files_sharing/lib/Controller/ShareesAPIController.php index 606a3d11de6..3a04dda72a1 100644 --- a/apps/files_sharing/lib/Controller/ShareesAPIController.php +++ b/apps/files_sharing/lib/Controller/ShareesAPIController.php @@ -94,7 +94,7 @@ class ShareesAPIController extends OCSController { * @param string|null $itemType Limit to specific item types * @param int $page Page offset for searching * @param int $perPage Limit amount of search results per page - * @param int|int[]|null $shareType Limit to specific share types + * @param int|list<int>|null $shareType Limit to specific share types * @param bool $lookup If a global lookup should be performed too * @return DataResponse<Http::STATUS_OK, Files_SharingShareesSearchResult, array{Link?: string}> * @throws OCSBadRequestException Invalid search parameters @@ -300,7 +300,7 @@ class ShareesAPIController extends OCSController { * Find recommended sharees * * @param string $itemType Limit to specific item types - * @param int|int[]|null $shareType Limit to specific share types + * @param int|list<int>|null $shareType Limit to specific share types * @return DataResponse<Http::STATUS_OK, Files_SharingShareesRecommendedResult, array{}> * * 200: Recommended sharees returned diff --git a/apps/files_sharing/lib/External/Manager.php b/apps/files_sharing/lib/External/Manager.php index e0d7f96cb90..e10b6c1c91f 100644 --- a/apps/files_sharing/lib/External/Manager.php +++ b/apps/files_sharing/lib/External/Manager.php @@ -11,6 +11,7 @@ use Doctrine\DBAL\Driver\Exception; use OC\Files\Filesystem; use OCA\FederatedFileSharing\Events\FederatedShareAddedEvent; use OCA\Files_Sharing\Helper; +use OCA\Files_Sharing\ResponseDefinitions; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\EventDispatcher\IEventDispatcher; use OCP\Federation\ICloudFederationFactory; @@ -30,6 +31,9 @@ use OCP\Share; use OCP\Share\IShare; use Psr\Log\LoggerInterface; +/** + * @psalm-import-type Files_SharingRemoteShare from ResponseDefinitions + */ class Manager { public const STORAGE = '\OCA\Files_Sharing\External\Storage'; @@ -686,7 +690,7 @@ class Manager { /** * return a list of shares which are not yet accepted by the user * - * @return array list of open server-to-server shares + * @return list<Files_SharingRemoteShare> list of open server-to-server shares */ public function getOpenShares() { return $this->getShares(false); @@ -695,7 +699,7 @@ class Manager { /** * return a list of shares which are accepted by the user * - * @return array list of accepted server-to-server shares + * @return list<Files_SharingRemoteShare> list of accepted server-to-server shares */ public function getAcceptedShares() { return $this->getShares(true); @@ -707,7 +711,7 @@ class Manager { * @param bool|null $accepted True for accepted only, * false for not accepted, * null for all shares of the user - * @return array list of open server-to-server shares + * @return list<Files_SharingRemoteShare> list of open server-to-server shares */ private function getShares($accepted) { $user = $this->userManager->get($this->uid); diff --git a/apps/files_sharing/lib/ResponseDefinitions.php b/apps/files_sharing/lib/ResponseDefinitions.php index d412b93a135..0edf67fe042 100644 --- a/apps/files_sharing/lib/ResponseDefinitions.php +++ b/apps/files_sharing/lib/ResponseDefinitions.php @@ -178,38 +178,38 @@ namespace OCA\Files_Sharing; * * @psalm-type Files_SharingShareesSearchResult = array{ * exact: array{ - * circles: Files_SharingShareeCircle[], - * emails: Files_SharingShareeEmail[], - * groups: Files_SharingSharee[], - * remote_groups: Files_SharingShareeRemoteGroup[], - * remotes: Files_SharingShareeRemote[], - * rooms: Files_SharingSharee[], - * users: Files_SharingShareeUser[], + * circles: list<Files_SharingShareeCircle>, + * emails: list<Files_SharingShareeEmail>, + * groups: list<Files_SharingSharee>, + * remote_groups: list<Files_SharingShareeRemoteGroup>, + * remotes: list<Files_SharingShareeRemote>, + * rooms: list<Files_SharingSharee>, + * users: list<Files_SharingShareeUser>, * }, - * circles: Files_SharingShareeCircle[], - * emails: Files_SharingShareeEmail[], - * groups: Files_SharingSharee[], - * lookup: Files_SharingShareeLookup[], - * remote_groups: Files_SharingShareeRemoteGroup[], - * remotes: Files_SharingShareeRemote[], - * rooms: Files_SharingSharee[], - * users: Files_SharingShareeUser[], + * circles: list<Files_SharingShareeCircle>, + * emails: list<Files_SharingShareeEmail>, + * groups: list<Files_SharingSharee>, + * lookup: list<Files_SharingShareeLookup>, + * remote_groups: list<Files_SharingShareeRemoteGroup>, + * remotes: list<Files_SharingShareeRemote>, + * rooms: list<Files_SharingSharee>, + * users: list<Files_SharingShareeUser>, * lookupEnabled: bool, * } * * @psalm-type Files_SharingShareesRecommendedResult = array{ * exact: array{ - * emails: Files_SharingShareeEmail[], - * groups: Files_SharingSharee[], - * remote_groups: Files_SharingShareeRemoteGroup[], - * remotes: Files_SharingShareeRemote[], - * users: Files_SharingShareeUser[], + * emails: list<Files_SharingShareeEmail>, + * groups: list<Files_SharingSharee>, + * remote_groups: list<Files_SharingShareeRemoteGroup>, + * remotes: list<Files_SharingShareeRemote>, + * users: list<Files_SharingShareeUser>, * }, - * emails: Files_SharingShareeEmail[], - * groups: Files_SharingSharee[], - * remote_groups: Files_SharingShareeRemoteGroup[], - * remotes: Files_SharingShareeRemote[], - * users: Files_SharingShareeUser[], + * emails: list<Files_SharingShareeEmail>, + * groups: list<Files_SharingSharee>, + * remote_groups: list<Files_SharingShareeRemoteGroup>, + * remotes: list<Files_SharingShareeRemote>, + * users: list<Files_SharingShareeUser>, * } * * @psalm-type Files_SharingShareInfo = array{ @@ -222,7 +222,7 @@ namespace OCA\Files_Sharing; * size: int|float, * type: string, * etag: string, - * children?: array<string, mixed>[], + * children?: list<array<string, mixed>>, * } */ class ResponseDefinitions { diff --git a/apps/files_sharing/openapi.json b/apps/files_sharing/openapi.json index 848b6293cc8..76063ad3f93 100644 --- a/apps/files_sharing/openapi.json +++ b/apps/files_sharing/openapi.json @@ -2170,7 +2170,10 @@ "$ref": "#/components/schemas/OCSMeta" }, "data": { - "$ref": "#/components/schemas/Share" + "type": "array", + "items": { + "$ref": "#/components/schemas/Share" + } } } } |