diff --git a/app/controllers/api/storage.php b/app/controllers/api/storage.php index 856e898113..8d047f2e21 100644 --- a/app/controllers/api/storage.php +++ b/app/controllers/api/storage.php @@ -2,8 +2,10 @@ use Appwrite\Auth\Auth; use Appwrite\ClamAV\Network; +use Appwrite\Event\Event; use Appwrite\Utopia\Database\Validator\CustomId; use Appwrite\OpenSSL\OpenSSL; +use Appwrite\Stats\Stats; use Appwrite\Utopia\Response; use Utopia\App; use Utopia\Cache\Adapter\Filesystem; @@ -21,6 +23,7 @@ use Utopia\Database\Validator\UID; use Appwrite\Extend\Exception; use Utopia\Image\Image; use Utopia\Storage\Compression\Algorithms\GZIP; +use Utopia\Storage\Device; use Utopia\Storage\Device\Local; use Utopia\Storage\Storage; use Utopia\Storage\Validator\File; @@ -34,6 +37,7 @@ use Utopia\Validator\Integer; use Utopia\Validator\Range; use Utopia\Validator\Text; use Utopia\Validator\WhiteList; +use Utopia\Swoole\Request; App::post('/v1/storage/buckets') ->desc('Create bucket') @@ -61,11 +65,7 @@ App::post('/v1/storage/buckets') ->inject('dbForProject') ->inject('audits') ->inject('usage') - ->action(function ($bucketId, $name, $permission, $read, $write, $enabled, $maximumFileSize, $allowedFileExtensions, $encryption, $antivirus, $response, $dbForProject, $audits, $usage) { - /** @var Appwrite\Utopia\Response $response */ - /** @var Utopia\Database\Database $dbForProject */ - /** @var Appwrite\Event\Event $audits */ - /** @var Appwrite\Stats\Stats $usage */ + ->action(function (string $bucketId, string $name, string $permission, ?array $read, ?array $write, bool $enabled, int $maximumFileSize, array $allowedFileExtensions, bool $encryption, bool $antivirus, Response $response, Database $dbForProject, Event $audits, Stats $usage) { $bucketId = $bucketId === 'unique()' ? $dbForProject->getId() : $bucketId; try { @@ -157,10 +157,7 @@ App::get('/v1/storage/buckets') ->inject('response') ->inject('dbForProject') ->inject('usage') - ->action(function ($search, $limit, $offset, $cursor, $cursorDirection, $orderType, $response, $dbForProject, $usage) { - /** @var Appwrite\Utopia\Response $response */ - /** @var Utopia\Database\Database $dbForProject */ - /** @var Appwrite\Stats\Stats $usage */ + ->action(function (string $search, int $limit, int $offset, string $cursor, string $cursorDirection, string $orderType, Response $response, Database $dbForProject, Stats $usage) { $queries = ($search) ? [new Query('name', Query::TYPE_SEARCH, $search)] : []; @@ -195,10 +192,7 @@ App::get('/v1/storage/buckets/:bucketId') ->inject('response') ->inject('dbForProject') ->inject('usage') - ->action(function ($bucketId, $response, $dbForProject, $usage) { - /** @var Appwrite\Utopia\Response $response */ - /** @var Utopia\Database\Database $dbForProject */ - /** @var Appwrite\Stats\Stats $usage */ + ->action(function (string $bucketId, Response $response, Database $dbForProject, Stats $usage) { $bucket = $dbForProject->getDocument('buckets', $bucketId); @@ -237,11 +231,7 @@ App::put('/v1/storage/buckets/:bucketId') ->inject('dbForProject') ->inject('audits') ->inject('usage') - ->action(function ($bucketId, $name, $permission, $read, $write, $enabled, $maximumFileSize, $allowedFileExtensions, $encryption, $antivirus, $response, $dbForProject, $audits, $usage) { - /** @var Appwrite\Utopia\Response $response */ - /** @var Utopia\Database\Database $dbForProject */ - /** @var Appwrite\Event\Event $audits */ - /** @var Appwrite\Stats\Stats $usage */ + ->action(function (string $bucketId, string $name, string $permission, ?array $read, ?array $write, bool $enabled, ?int $maximumFileSize, array $allowedFileExtensions, bool $encryption, bool $antivirus, Response $response, Database $dbForProject, Event $audits, Stats $usage) { $bucket = $dbForProject->getDocument('buckets', $bucketId); @@ -298,13 +288,7 @@ App::delete('/v1/storage/buckets/:bucketId') ->inject('deletes') ->inject('events') ->inject('usage') - ->action(function ($bucketId, $response, $dbForProject, $audits, $deletes, $events, $usage) { - /** @var Appwrite\Utopia\Response $response */ - /** @var Utopia\Database\Database $dbForProject */ - /** @var Appwrite\Event\Event $audits */ - /** @var Appwrite\Event\Event $deletes */ - /** @var Appwrite\Event\Event $events */ - /** @var Appwrite\Stats\Stats $usage */ + ->action(function (string $bucketId, Response $response, Database $dbForProject, Event $audits, Event $deletes, Event $events, Stats $usage) { $bucket = $dbForProject->getDocument('buckets', $bucketId); @@ -366,17 +350,7 @@ App::post('/v1/storage/buckets/:bucketId/files') ->inject('mode') ->inject('deviceFiles') ->inject('deviceLocal') - ->action(function ($bucketId, $fileId, $file, $read, $write, $request, $response, $dbForProject, $user, $audits, $usage, $events, $mode, $deviceFiles, $deviceLocal) { - /** @var Utopia\Swoole\Request $request */ - /** @var Appwrite\Utopia\Response $response */ - /** @var Utopia\Database\Database $dbForProject */ - /** @var Utopia\Database\Document $user */ - /** @var Appwrite\Event\Event $audits */ - /** @var Appwrite\Event\Event $events */ - /** @var Appwrite\Stats\Stats $usage */ - /** @var Utopia\Storage\Device $deviceFiles */ - /** @var Utopia\Storage\Device $deviceLocal */ - /** @var string $mode */ + ->action(function (string $bucketId, string $fileId, array $file, ?array $read, ?array $write, Request $request, Response $response, Database $dbForProject, Document $user, Event $audits, Stats $usage, Event $events, string $mode, Device $deviceFiles, Device $deviceLocal) { $bucket = Authorization::skip(fn () => $dbForProject->getDocument('buckets', $bucketId)); @@ -711,11 +685,7 @@ App::get('/v1/storage/buckets/:bucketId/files') ->inject('dbForProject') ->inject('usage') ->inject('mode') - ->action(function ($bucketId, $search, $limit, $offset, $cursor, $cursorDirection, $orderType, $response, $dbForProject, $usage, $mode) { - /** @var Appwrite\Utopia\Response $response */ - /** @var Utopia\Database\Database $dbForProject */ - /** @var Appwrite\Stats\Stats $usage */ - /** @var string $mode */ + ->action(function (string $bucketId, string $search, int $limit, int $offset, string $cursor, string $cursorDirection, string $orderType, Response $response, Database $dbForProject, Stats $usage, string $mode) { $bucket = Authorization::skip(fn () => $dbForProject->getDocument('buckets', $bucketId)); @@ -791,11 +761,7 @@ App::get('/v1/storage/buckets/:bucketId/files/:fileId') ->inject('dbForProject') ->inject('usage') ->inject('mode') - ->action(function ($bucketId, $fileId, $response, $dbForProject, $usage, $mode) { - /** @var Appwrite\Utopia\Response $response */ - /** @var Utopia\Database\Database $dbForProject */ - /** @var Appwrite\Stats\Stats $usage */ - /** @var string $mode */ + ->action(function (string $bucketId, string $fileId, Response $response, Database $dbForProject, Stats $usage, string $mode) { $bucket = Authorization::skip(fn () => $dbForProject->getDocument('buckets', $bucketId)); @@ -863,15 +829,7 @@ App::get('/v1/storage/buckets/:bucketId/files/:fileId/preview') ->inject('mode') ->inject('deviceFiles') ->inject('deviceLocal') - ->action(function ($bucketId, $fileId, $width, $height, $gravity, $quality, $borderWidth, $borderColor, $borderRadius, $opacity, $rotation, $background, $output, $request, $response, $project, $dbForProject, $usage, $mode, $deviceFiles, $deviceLocal) { - /** @var Utopia\Swoole\Request $request */ - /** @var Appwrite\Utopia\Response $response */ - /** @var Utopia\Database\Document $project */ - /** @var Utopia\Database\Database $dbForProject */ - /** @var Appwrite\Stats\Stats $usage */ - /** @var Utopia\Storage\Device $deviceFiles */ - /** @var Utopia\Storage\Device $deviceLocal */ - /** @var string $mode */ + ->action(function (string $bucketId, string $fileId, int $width, int $height, string $gravity, int $quality, int $borderWidth, string $borderColor, int $borderRadius, float $opacity, int $rotation, string $background, string $output, Request $request, Response $response, Document $project, Database $dbForProject, Stats $usage, string $mode, Device $deviceFiles, Device $deviceLocal) { if (!\extension_loaded('imagick')) { throw new Exception('Imagick extension is missing', 500, Exception::GENERAL_SERVER_ERROR); @@ -1041,13 +999,7 @@ App::get('/v1/storage/buckets/:bucketId/files/:fileId/download') ->inject('usage') ->inject('mode') ->inject('deviceFiles') - ->action(function ($bucketId, $fileId, $request, $response, $dbForProject, $usage, $mode, $deviceFiles) { - /** @var Utopia\Swoole\Request $request */ - /** @var Appwrite\Utopia\Response $response */ - /** @var Utopia\Database\Database $dbForProject */ - /** @var Appwrite\Stats\Stats $usage */ - /** @var Utopia\Storage\Device $deviceFiles */ - /** @var string $mode */ + ->action(function (string $bucketId, string $fileId, Request $request, Response $response, Database $dbForProject, Stats $usage, string $mode, Device $deviceFiles) { $bucket = Authorization::skip(fn () => $dbForProject->getDocument('buckets', $bucketId)); @@ -1184,13 +1136,7 @@ App::get('/v1/storage/buckets/:bucketId/files/:fileId/view') ->inject('usage') ->inject('mode') ->inject('deviceFiles') - ->action(function ($bucketId, $fileId, $response, $request, $dbForProject, $usage, $mode, $deviceFiles) { - /** @var Appwrite\Utopia\Response $response */ - /** @var Utopia\Swoole\Request $request */ - /** @var Utopia\Database\Database $dbForInternal */ - /** @var Appwrite\Stats\Stats $usage */ - /** @var Utopia\Storage\Device $deviceFiles */ - /** @var string $mode */ + ->action(function (string $bucketId, string $fileId, Response $response, Request $request, Database $dbForProject, Stats $usage, string $mode, Device $deviceFiles) { $bucket = Authorization::skip(fn () => $dbForProject->getDocument('buckets', $bucketId)); @@ -1344,14 +1290,7 @@ App::put('/v1/storage/buckets/:bucketId/files/:fileId') ->inject('usage') ->inject('mode') ->inject('events') - ->action(function ($bucketId, $fileId, $read, $write, $response, $dbForProject, $user, $audits, $usage, $mode, $events) { - /** @var Appwrite\Utopia\Response $response */ - /** @var Utopia\Database\Database $dbForProject */ - /** @var Utopia\Database\Document $user */ - /** @var Appwrite\Event\Event $audits */ - /** @var Appwrite\Stats\Stats $usage */ - /** @var Appwrite\Event\Event $events */ - /** @var string $mode */ + ->action(function (string $bucketId, string $fileId, ?array $read, ?array $write,Response $response, Database $dbForProject, Document $user, Event $audits, Stats $usage, string $mode, Event $events) { $bucket = Authorization::skip(fn () => $dbForProject->getDocument('buckets', $bucketId)); $read = (is_null($read) && !$user->isEmpty()) ? ['user:' . $user->getId()] : $read ?? []; // By default set read permissions for user @@ -1444,15 +1383,7 @@ App::delete('/v1/storage/buckets/:bucketId/files/:fileId') ->inject('mode') ->inject('deviceFiles') ->inject('project') - ->action(function ($bucketId, $fileId, $response, $dbForProject, $events, $audits, $usage, $mode, $deviceFiles, $project) { - /** @var Appwrite\Utopia\Response $response */ - /** @var Utopia\Database\Database $dbForProject */ - /** @var Utopia\Database\Database $dbForProject */ - /** @var Appwrite\Event\Event $events */ - /** @var Appwrite\Event\Event $audits */ - /** @var Appwrite\Stats\Stats $usage */ - /** @var Utopia\Storage\Device $deviceFiles */ - /** @var string $mode */ + ->action(function (string $bucketId, string $fileId, Response $response, Database $dbForProject, Event $events, Event $audits, Stats $usage, string $mode, Device $deviceFiles, Document $project) { $bucket = Authorization::skip(fn () => $dbForProject->getDocument('buckets', $bucketId)); @@ -1539,9 +1470,7 @@ App::get('/v1/storage/usage') ->param('range', '30d', new WhiteList(['24h', '7d', '30d', '90d'], true), 'Date range.', true) ->inject('response') ->inject('dbForProject') - ->action(function ($range, $response, $dbForProject) { - /** @var Appwrite\Utopia\Response $response */ - /** @var Utopia\Database\Database $dbForProject */ + ->action(function (string $range, Response $response, Database $dbForProject) { $usage = []; if (App::getEnv('_APP_USAGE_STATS', 'enabled') === 'enabled') { @@ -1651,9 +1580,7 @@ App::get('/v1/storage/:bucketId/usage') ->param('range', '30d', new WhiteList(['24h', '7d', '30d', '90d'], true), 'Date range.', true) ->inject('response') ->inject('dbForProject') - ->action(function ($bucketId, $range, $response, $dbForProject) { - /** @var Appwrite\Utopia\Response $response */ - /** @var Utopia\Database\Database $dbForProject */ + ->action(function (string $bucketId, string $range, Response $response, Database $dbForProject) { $bucket = $dbForProject->getDocument('buckets', $bucketId);