diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index 4e9d10ba0a..f4ccd225c8 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -966,13 +966,13 @@ App::delete('/v1/account') ->label('sdk.response.code', Response::STATUS_CODE_NOCONTENT) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_NONE) - ->action(function ($request, $response, $user, $projectDB, $audits, $webhooks) { + ->action(function ($request, $response, $user, $projectDB, $audits, $events) { /** @var Utopia\Swoole\Request $request */ /** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Database\Document $user */ /** @var Appwrite\Database\Database $projectDB */ /** @var Appwrite\Event\Event $audits */ - /** @var Appwrite\Event\Event $webhooks */ + /** @var Appwrite\Event\Event $events */ $protocol = $request->getProtocol(); $user = $projectDB->updateDocument(\array_merge($user->getArrayCopy(), [ @@ -998,7 +998,7 @@ App::delete('/v1/account') ->setParam('data', $user->getArrayCopy()) ; - $webhooks + $events ->setParam('payload', $response->output($user, Response::MODEL_USER)) ; @@ -1013,7 +1013,7 @@ App::delete('/v1/account') ->addCookie(Auth::$cookieName, '', \time() - 3600, '/', Config::getParam('cookieDomain'), ('https' == $protocol), true, Config::getParam('cookieSamesite')) ->noContent() ; - }, ['request', 'response', 'user', 'projectDB', 'audits', 'webhooks']); + }, ['request', 'response', 'user', 'projectDB', 'audits', 'events']); App::delete('/v1/account/sessions/:sessionId') ->desc('Delete Account Session') @@ -1029,13 +1029,13 @@ App::delete('/v1/account/sessions/:sessionId') ->label('sdk.response.model', Response::MODEL_NONE) ->label('abuse-limit', 100) ->param('sessionId', null, new UID(), 'Session unique ID. Use the string \'current\' to delete the current device session.') - ->action(function ($sessionId, $request, $response, $user, $projectDB, $audits, $webhooks) { + ->action(function ($sessionId, $request, $response, $user, $projectDB, $audits, $events) { /** @var Utopia\Swoole\Request $request */ /** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Database\Document $user */ /** @var Appwrite\Database\Database $projectDB */ /** @var Appwrite\Event\Event $audits */ - /** @var Appwrite\Event\Event $webhooks */ + /** @var Appwrite\Event\Event $events */ $protocol = $request->getProtocol(); $sessionId = ($sessionId === 'current') @@ -1073,7 +1073,7 @@ App::delete('/v1/account/sessions/:sessionId') ; } - $webhooks + $events ->setParam('payload', $response->output($token, Response::MODEL_SESSION)) ; @@ -1082,7 +1082,7 @@ App::delete('/v1/account/sessions/:sessionId') } throw new Exception('Session not found', 404); - }, ['request', 'response', 'user', 'projectDB', 'audits', 'webhooks']); + }, ['request', 'response', 'user', 'projectDB', 'audits', 'events']); App::delete('/v1/account/sessions') ->desc('Delete All Account Sessions') @@ -1097,13 +1097,13 @@ App::delete('/v1/account/sessions') ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_NONE) ->label('abuse-limit', 100) - ->action(function ($request, $response, $user, $projectDB, $audits, $webhooks) { + ->action(function ($request, $response, $user, $projectDB, $audits, $events) { /** @var Utopia\Swoole\Request $request */ /** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Database\Document $user */ /** @var Appwrite\Database\Database $projectDB */ /** @var Appwrite\Event\Event $audits */ - /** @var Appwrite\Event\Event $webhooks */ + /** @var Appwrite\Event\Event $events */ $protocol = $request->getProtocol(); $tokens = $user->getAttribute('tokens', []); @@ -1136,7 +1136,7 @@ App::delete('/v1/account/sessions') } } - $webhooks + $events ->setParam('payload', $response->output(new Document([ 'sum' => count($tokens), 'sessions' => $tokens @@ -1144,7 +1144,7 @@ App::delete('/v1/account/sessions') ; $response->noContent(); - }, ['request', 'response', 'user', 'projectDB', 'audits', 'webhooks']); + }, ['request', 'response', 'user', 'projectDB', 'audits', 'events']); App::post('/v1/account/recovery') ->desc('Create Password Recovery') @@ -1162,7 +1162,7 @@ App::post('/v1/account/recovery') ->label('abuse-key', 'url:{url},email:{param-email}') ->param('email', '', new Email(), 'User email.') ->param('url', '', function ($clients) { return new Host($clients); }, 'URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', false, ['clients']) - ->action(function ($email, $url, $request, $response, $projectDB, $project, $locale, $mails, $audits, $webhooks) { + ->action(function ($email, $url, $request, $response, $projectDB, $project, $locale, $mails, $audits, $events) { /** @var Utopia\Swoole\Request $request */ /** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Database\Database $projectDB */ @@ -1170,7 +1170,7 @@ App::post('/v1/account/recovery') /** @var Utopia\Locale\Locale $locale */ /** @var Appwrite\Event\Event $mails */ /** @var Appwrite\Event\Event $audits */ - /** @var Appwrite\Event\Event $webhooks */ + /** @var Appwrite\Event\Event $events */ $isPreviliggedUser = Auth::isPreviliggedUser(Authorization::$roles); $isAppUser = Auth::isAppUser(Authorization::$roles); @@ -1249,7 +1249,7 @@ App::post('/v1/account/recovery') ->trigger(); ; - $webhooks + $events ->setParam('payload', $response->output($recovery->setAttribute('secret', $secret), Response::MODEL_TOKEN @@ -1270,7 +1270,7 @@ App::post('/v1/account/recovery') ->setStatusCode(Response::STATUS_CODE_CREATED) ->dynamic($recovery, Response::MODEL_TOKEN) ; - }, ['request', 'response', 'projectDB', 'project', 'locale', 'mails', 'audits', 'webhooks']); + }, ['request', 'response', 'projectDB', 'project', 'locale', 'mails', 'audits', 'events']); App::put('/v1/account/recovery') ->desc('Complete Password Recovery') @@ -1363,7 +1363,7 @@ App::post('/v1/account/verification') ->label('abuse-limit', 10) ->label('abuse-key', 'url:{url},email:{param-email}') ->param('url', '', function ($clients) { return new Host($clients); }, 'URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', false, ['clients']) // TODO add built-in confirm page - ->action(function ($url, $request, $response, $project, $user, $projectDB, $locale, $audits, $webhooks, $mails) { + ->action(function ($url, $request, $response, $project, $user, $projectDB, $locale, $audits, $events, $mails) { /** @var Utopia\Swoole\Request $request */ /** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Database\Document $project */ @@ -1371,7 +1371,7 @@ App::post('/v1/account/verification') /** @var Appwrite\Database\Database $projectDB */ /** @var Utopia\Locale\Locale $locale */ /** @var Appwrite\Event\Event $audits */ - /** @var Appwrite\Event\Event $webhooks */ + /** @var Appwrite\Event\Event $events */ /** @var Appwrite\Event\Event $mails */ $isPreviliggedUser = Auth::isPreviliggedUser(Authorization::$roles); @@ -1440,7 +1440,7 @@ App::post('/v1/account/verification') ->trigger() ; - $webhooks + $events ->setParam('payload', $response->output($verification->setAttribute('secret', $verificationSecret), Response::MODEL_TOKEN @@ -1461,7 +1461,7 @@ App::post('/v1/account/verification') ->setStatusCode(Response::STATUS_CODE_CREATED) ->dynamic($verification, Response::MODEL_TOKEN) ; - }, ['request', 'response', 'project', 'user', 'projectDB', 'locale', 'audits', 'webhooks', 'mails']); + }, ['request', 'response', 'project', 'user', 'projectDB', 'locale', 'audits', 'events', 'mails']); App::put('/v1/account/verification') ->desc('Complete Email Verification') diff --git a/app/controllers/api/database.php b/app/controllers/api/database.php index eb6bd5ed4d..681845957a 100644 --- a/app/controllers/api/database.php +++ b/app/controllers/api/database.php @@ -235,10 +235,10 @@ App::delete('/v1/database/collections/:collectionId') ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_NONE) ->param('collectionId', '', new UID(), 'Collection unique ID.') - ->action(function ($collectionId, $response, $projectDB, $webhooks, $audits, $deletes) { + ->action(function ($collectionId, $response, $projectDB, $events, $audits, $deletes) { /** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Database\Database $projectDB */ - /** @var Appwrite\Event\Event $webhooks */ + /** @var Appwrite\Event\Event $events */ /** @var Appwrite\Event\Event $audits */ $collection = $projectDB->getDocument($collectionId, false); @@ -255,7 +255,7 @@ App::delete('/v1/database/collections/:collectionId') ->setParam('document', $collection) ; - $webhooks + $events ->setParam('payload', $response->output($collection, Response::MODEL_COLLECTION)) ; @@ -266,7 +266,7 @@ App::delete('/v1/database/collections/:collectionId') ; $response->noContent(); - }, ['response', 'projectDB', 'webhooks', 'audits', 'deletes']); + }, ['response', 'projectDB', 'events', 'audits', 'deletes']); App::post('/v1/database/collections/:collectionId/documents') ->desc('Create Document') @@ -565,10 +565,10 @@ App::delete('/v1/database/collections/:collectionId/documents/:documentId') ->label('sdk.response.model', Response::MODEL_NONE) ->param('collectionId', null, new UID(), 'Collection unique ID. You can create a new collection with validation rules using the Database service [server integration](/docs/server/database#createCollection).') ->param('documentId', null, new UID(), 'Document unique ID.') - ->action(function ($collectionId, $documentId, $response, $projectDB, $webhooks, $audits) { + ->action(function ($collectionId, $documentId, $response, $projectDB, $events, $audits) { /** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Database\Database $projectDB */ - /** @var Appwrite\Event\Event $webhooks */ + /** @var Appwrite\Event\Event $events */ /** @var Appwrite\Event\Event $audits */ $collection = $projectDB->getDocument($collectionId, false); @@ -592,7 +592,7 @@ App::delete('/v1/database/collections/:collectionId/documents/:documentId') throw new Exception('Failed to remove document from DB', 500); } - $webhooks + $events ->setParam('payload', $response->output($document, Response::MODEL_ANY)) ; @@ -603,4 +603,4 @@ App::delete('/v1/database/collections/:collectionId/documents/:documentId') ; $response->noContent(); - }, ['response', 'projectDB', 'webhooks', 'audits']); \ No newline at end of file + }, ['response', 'projectDB', 'events', 'audits']); \ No newline at end of file diff --git a/app/controllers/api/storage.php b/app/controllers/api/storage.php index 0c4584fac3..972dede8a6 100644 --- a/app/controllers/api/storage.php +++ b/app/controllers/api/storage.php @@ -534,10 +534,10 @@ App::delete('/v1/storage/files/:fileId') ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_NONE) ->param('fileId', '', new UID(), 'File unique ID.') - ->action(function ($fileId, $response, $projectDB, $webhooks, $audits, $usage) { + ->action(function ($fileId, $response, $projectDB, $events, $audits, $usage) { /** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Database\Database $projectDB */ - /** @var Appwrite\Event\Event $webhooks */ + /** @var Appwrite\Event\Event $events */ /** @var Appwrite\Event\Event $audits */ /** @var Appwrite\Event\Event $usage */ @@ -564,12 +564,12 @@ App::delete('/v1/storage/files/:fileId') ->setParam('storage', $file->getAttribute('size', 0) * -1) ; - $webhooks + $events ->setParam('payload', $response->output($file, Response::MODEL_FILE)) ; $response->noContent(); - }, ['response', 'projectDB', 'webhooks', 'audits', 'usage']); + }, ['response', 'projectDB', 'events', 'audits', 'usage']); // App::get('/v1/storage/files/:fileId/scan') // ->desc('Scan Storage') diff --git a/app/controllers/api/teams.php b/app/controllers/api/teams.php index 33ba1b333b..654b8f7011 100644 --- a/app/controllers/api/teams.php +++ b/app/controllers/api/teams.php @@ -203,10 +203,10 @@ App::delete('/v1/teams/:teamId') ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_NONE) ->param('teamId', '', new UID(), 'Team unique ID.') - ->action(function ($teamId, $response, $projectDB, $webhooks) { + ->action(function ($teamId, $response, $projectDB, $events) { /** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Database\Database $projectDB */ - /** @var Appwrite\Event\Event $webhooks */ + /** @var Appwrite\Event\Event $events */ $team = $projectDB->getDocument($teamId); @@ -233,12 +233,12 @@ App::delete('/v1/teams/:teamId') throw new Exception('Failed to remove team from DB', 500); } - $webhooks + $events ->setParam('payload', $response->output($team, Response::MODEL_TEAM)) ; $response->noContent(); - }, ['response', 'projectDB', 'webhooks']); + }, ['response', 'projectDB', 'events']); App::post('/v1/teams/:teamId/memberships') ->desc('Create Team Membership') @@ -683,11 +683,11 @@ App::delete('/v1/teams/:teamId/memberships/:inviteId') ->label('sdk.response.model', Response::MODEL_NONE) ->param('teamId', '', new UID(), 'Team unique ID.') ->param('inviteId', '', new UID(), 'Invite unique ID.') - ->action(function ($teamId, $inviteId, $response, $projectDB, $audits, $webhooks) { + ->action(function ($teamId, $inviteId, $response, $projectDB, $audits, $events) { /** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Database\Database $projectDB */ /** @var Appwrite\Event\Event $audits */ - /** @var Appwrite\Event\Event $webhooks */ + /** @var Appwrite\Event\Event $events */ $membership = $projectDB->getDocument($inviteId); @@ -725,9 +725,9 @@ App::delete('/v1/teams/:teamId/memberships/:inviteId') ->setParam('resource', 'teams/'.$teamId) ; - $webhooks + $events ->setParam('payload', $response->output($membership, Response::MODEL_MEMBERSHIP)) ; $response->noContent(); - }, ['response', 'projectDB', 'audits', 'webhooks']); + }, ['response', 'projectDB', 'audits', 'events']); diff --git a/app/controllers/api/users.php b/app/controllers/api/users.php index 349ed5a880..25508226cb 100644 --- a/app/controllers/api/users.php +++ b/app/controllers/api/users.php @@ -402,10 +402,10 @@ App::delete('/v1/users/:userId/sessions/:sessionId') ->label('abuse-limit', 100) ->param('userId', '', new UID(), 'User unique ID.') ->param('sessionId', null, new UID(), 'User unique session ID.') - ->action(function ($userId, $sessionId, $response, $projectDB, $webhooks) { + ->action(function ($userId, $sessionId, $response, $projectDB, $events) { /** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Database\Database $projectDB */ - /** @var Appwrite\Event\Event $webhooks */ + /** @var Appwrite\Event\Event $events */ $user = $projectDB->getDocument($userId); @@ -421,14 +421,14 @@ App::delete('/v1/users/:userId/sessions/:sessionId') throw new Exception('Failed to remove token from DB', 500); } - $webhooks + $events ->setParam('payload', $response->output($user, Response::MODEL_USER)) ; } } $response->noContent(); - }, ['response', 'projectDB', 'webhooks']); + }, ['response', 'projectDB', 'events']); App::delete('/v1/users/:userId/sessions') ->desc('Delete User Sessions') @@ -444,10 +444,10 @@ App::delete('/v1/users/:userId/sessions') ->label('sdk.response.model', Response::MODEL_NONE) ->label('abuse-limit', 100) ->param('userId', '', new UID(), 'User unique ID.') - ->action(function ($userId, $response, $projectDB, $webhooks) { + ->action(function ($userId, $response, $projectDB, $events) { /** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Database\Database $projectDB */ - /** @var Appwrite\Event\Event $webhooks */ + /** @var Appwrite\Event\Event $events */ $user = $projectDB->getDocument($userId); @@ -463,12 +463,12 @@ App::delete('/v1/users/:userId/sessions') } } - $webhooks + $events ->setParam('payload', $response->output($user, Response::MODEL_USER)) ; $response->noContent(); - }, ['response', 'projectDB', 'webhooks']); + }, ['response', 'projectDB', 'events']); App::delete('/v1/users/:userId') ->desc('Delete User') @@ -484,10 +484,10 @@ App::delete('/v1/users/:userId') ->label('sdk.response.model', Response::MODEL_NONE) ->label('abuse-limit', 100) ->param('userId', '', function () {return new UID();}, 'User unique ID.') - ->action(function ($userId, $response, $projectDB, $webhooks, $deletes) { + ->action(function ($userId, $response, $projectDB, $events, $deletes) { /** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Database\Database $projectDB */ - /** @var Appwrite\Event\Event $webhooks */ + /** @var Appwrite\Event\Event $events */ /** @var Appwrite\Event\Event $deletes */ $user = $projectDB->getDocument($userId); @@ -519,9 +519,9 @@ App::delete('/v1/users/:userId') ->setParam('document', $user) ; - $webhooks + $events ->setParam('payload', $response->output($user, Response::MODEL_USER)) ; $response->noContent(); - }, ['response', 'projectDB', 'webhooks', 'deletes']); + }, ['response', 'projectDB', 'events', 'deletes']); diff --git a/app/controllers/general.php b/app/controllers/general.php index 9f61db6eec..972cbf4110 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -22,14 +22,14 @@ Config::setParam('domainVerification', false); Config::setParam('cookieDomain', 'localhost'); Config::setParam('cookieSamesite', Response::COOKIE_SAMESITE_NONE); -App::init(function ($utopia, $request, $response, $console, $project, $user, $locale, $webhooks, $audits, $usage, $deletes, $clients) { +App::init(function ($utopia, $request, $response, $console, $project, $user, $locale, $events, $audits, $usage, $deletes, $clients) { /** @var Utopia\Swoole\Request $request */ /** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Database\Document $console */ /** @var Appwrite\Database\Document $project */ /** @var Appwrite\Database\Document $user */ /** @var Utopia\Locale\Locale $locale */ - /** @var Appwrite\Event\Event $webhooks */ + /** @var Appwrite\Event\Event $events */ /** @var Appwrite\Event\Event $audits */ /** @var Appwrite\Event\Event $usage */ /** @var Appwrite\Event\Event $deletes */ @@ -220,7 +220,7 @@ App::init(function ($utopia, $request, $response, $console, $project, $user, $lo /* * Background Jobs */ - $webhooks + $events ->setParam('projectId', $project->getId()) ->setParam('userId', $user->getId()) ->setParam('event', $route->getLabel('event', '')) @@ -250,25 +250,33 @@ App::init(function ($utopia, $request, $response, $console, $project, $user, $lo $deletes ->setParam('projectId', $project->getId()) ; -}, ['utopia', 'request', 'response', 'console', 'project', 'user', 'locale', 'webhooks', 'audits', 'usage', 'deletes', 'clients']); +}, ['utopia', 'request', 'response', 'console', 'project', 'user', 'locale', 'events', 'audits', 'usage', 'deletes', 'clients']); -App::shutdown(function ($utopia, $request, $response, $project, $webhooks, $audits, $usage, $deletes, $mode) { +App::shutdown(function ($utopia, $request, $response, $project, $events, $audits, $usage, $deletes, $mode) { /** @var Utopia\App $utopia */ /** @var Utopia\Swoole\Request $request */ /** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Database\Document $project */ - /** @var Appwrite\Event\Event $webhooks */ + /** @var Appwrite\Event\Event $events */ /** @var Appwrite\Event\Event $audits */ /** @var Appwrite\Event\Event $usage */ /** @var Appwrite\Event\Event $deletes */ /** @var bool $mode */ - if (!empty($webhooks->getParam('event'))) { - if(empty($webhooks->getParam('payload'))) { - $webhooks->setParam('payload', $response->getPayload()); + if (!empty($events->getParam('event'))) { + if(empty($events->getParam('payload'))) { + $events->setParam('payload', $response->getPayload()); } - $webhooks->trigger(); + $events + ->setQueue('v1-webhooks') + ->setClass('WebhooksV1') + ->trigger(); + + $events + ->setQueue('v1-functions') + ->setClass('FunctionsV1') + ->trigger(); } if (!empty($audits->getParam('event'))) { @@ -291,7 +299,7 @@ App::shutdown(function ($utopia, $request, $response, $project, $webhooks, $audi ->trigger() ; } -}, ['utopia', 'request', 'response', 'project', 'webhooks', 'audits', 'usage', 'deletes', 'mode']); +}, ['utopia', 'request', 'response', 'project', 'events', 'audits', 'usage', 'deletes', 'mode']); App::options(function ($request, $response) { /** @var Utopia\Swoole\Request $request */ diff --git a/app/init.php b/app/init.php index ee4c217bc8..acaf6277d9 100644 --- a/app/init.php +++ b/app/init.php @@ -203,24 +203,6 @@ $register->set('smtp', function () { $register->set('geodb', function () { return new Reader(__DIR__.'/db/DBIP/dbip-country-lite-2020-01.mmdb'); }); -$register->set('queue-webhooks', function () { - return new Event('v1-webhooks', 'WebhooksV1'); -}); -$register->set('queue-audits', function () { - return new Event('v1-audits', 'AuditsV1'); -}); -$register->set('queue-usage', function () { - return new Event('v1-usage', 'UsageV1'); -}); -$register->set('queue-mails', function () { - return new Event('v1-mails', 'MailsV1'); -}); -$register->set('queue-deletes', function () { - return new Event('v1-deletes', 'DeletesV1'); -}); -$register->set('queue-functions', function () { - return new Event('v1-functions', 'FunctionsV1'); -}); /* * Localization @@ -311,28 +293,24 @@ App::setResource('locale', function() { }); // Queues -App::setResource('webhooks', function($register) { - return $register->get('queue-webhooks'); +App::setResource('events', function($register) { + return new Event('', ''); }, ['register']); App::setResource('audits', function($register) { - return $register->get('queue-audits'); + return new Event('v1-audits', 'AuditsV1'); }, ['register']); App::setResource('usage', function($register) { - return $register->get('queue-usage'); + return new Event('v1-usage', 'UsageV1'); }, ['register']); App::setResource('mails', function($register) { - return $register->get('queue-mails'); + return new Event('v1-mails', 'MailsV1'); }, ['register']); App::setResource('deletes', function($register) { - return $register->get('queue-deletes'); -}, ['register']); - -App::setResource('functions', function($register) { - return $register->get('queue-functions'); + return new Event('v1-deletes', 'DeletesV1'); }, ['register']); // Test Mock diff --git a/src/Appwrite/Event/Event.php b/src/Appwrite/Event/Event.php index f89b2e594f..bc712d7244 100644 --- a/src/Appwrite/Event/Event.php +++ b/src/Appwrite/Event/Event.php @@ -33,6 +33,42 @@ class Event $this->class = $class; } + /** + * @param string $queue + * return $this + */ + public function setQueue(string $queue): self + { + $this->queue = $queue; + return $this; + } + + /** + * @return string + */ + public function getQueue() + { + return $this->queue; + } + + /** + * @param string $class + * return $this + */ + public function setClass(string $class): self + { + $this->class = $class; + return $this; + } + + /** + * @return string + */ + public function getClass() + { + return $this->class; + } + /** * @param string $key * @param mixed $value diff --git a/tests/unit/Auth/Validator/PasswordTest.php b/tests/unit/Auth/Validator/PasswordTest.php index 26972c74f5..2dbcc340d9 100644 --- a/tests/unit/Auth/Validator/PasswordTest.php +++ b/tests/unit/Auth/Validator/PasswordTest.php @@ -5,7 +5,7 @@ namespace Appwrite\Tests; use Appwrite\Auth\Validator\Password; use PHPUnit\Framework\TestCase; -class PasswordTestTest extends TestCase +class PasswordTest extends TestCase { /** * @var Password diff --git a/tests/unit/Event/EventTest.php b/tests/unit/Event/EventTest.php index 7d14cf18fc..58d7a1c045 100644 --- a/tests/unit/Event/EventTest.php +++ b/tests/unit/Event/EventTest.php @@ -32,6 +32,28 @@ class EventTest extends TestCase { } + public function testQueue() + { + $this->assertEquals($this->queue, $this->object->getQueue()); + + $this->object->setQueue('demo'); + + $this->assertEquals('demo', $this->object->getQueue()); + + $this->object->setQueue($this->queue); + } + + public function testClass() + { + $this->assertEquals('TestsV1', $this->object->getClass()); + + $this->object->setClass('TestsV2'); + + $this->assertEquals('TestsV2', $this->object->getClass()); + + $this->object->setClass('TestsV1'); + } + public function testParams() { $this->object