diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index eda29656fe..6a06e2a09e 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -157,7 +157,7 @@ App::post('/v1/account') ], 'userId' => $user->getId(), 'userInternalId' => $user->getInternalId(), - 'providerType' => 'email', + 'providerType' => MESSAGE_TYPE_EMAIL, 'identifier' => $email, ]))); $user->setAttribute('targets', [$target]); @@ -678,7 +678,7 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect') ], 'userId' => $userDoc->getId(), 'userInternalId' => $userDoc->getInternalId(), - 'providerType' => 'email', + 'providerType' => MESSAGE_TYPE_EMAIL, 'identifier' => $email, ])); } catch (Duplicate) { @@ -1732,7 +1732,7 @@ App::post('/v1/account/targets/push') ], 'providerId' => $providerId ?? null, 'providerInternalId' => $provider->getInternalId() ?? null, - 'providerType' => 'push', + 'providerType' => MESSAGE_TYPE_PUSH, 'userId' => $user->getId(), 'userInternalId' => $user->getInternalId(), 'identifier' => $identifier, diff --git a/app/controllers/api/users.php b/app/controllers/api/users.php index 0c1edb6a96..92af97f950 100644 --- a/app/controllers/api/users.php +++ b/app/controllers/api/users.php @@ -396,7 +396,7 @@ App::post('/v1/users/:userId/targets') ->label('sdk.response.model', Response::MODEL_TARGET) ->param('targetId', '', new CustomId(), 'Target ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('userId', '', new UID(), 'User ID.') - ->param('providerType', '', new WhiteList(['email', 'sms', 'push']), 'The target provider type. Can be one of the following: `email`, `sms` or `push`.') + ->param('providerType', '', new WhiteList([MESSAGE_TYPE_EMAIL, MESSAGE_TYPE_SMS, MESSAGE_TYPE_PUSH]), 'The target provider type. Can be one of the following: `email`, `sms` or `push`.') ->param('identifier', '', new Text(Database::LENGTH_KEY), 'The target identifier (token, email, phone etc.)') ->param('providerId', '', new UID(), 'Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.', true) ->inject('queueForEvents') @@ -407,7 +407,7 @@ App::post('/v1/users/:userId/targets') $provider = new Document(); - if ($providerType === 'push') { + if ($providerType === MESSAGE_TYPE_PUSH) { $provider = $dbForProject->getDocument('providers', $providerId); if ($provider->isEmpty()) { @@ -422,13 +422,13 @@ App::post('/v1/users/:userId/targets') throw new Exception(Exception::GENERAL_INVALID_EMAIL); } break; - case 'sms': + case MESSAGE_TYPE_SMS: $validator = new Phone(); if (!$validator->isValid($identifier)) { throw new Exception(Exception::GENERAL_INVALID_PHONE); } break; - case 'push': + case MESSAGE_TYPE_PUSH: break; default: throw new Exception(Exception::PROVIDER_INCORRECT_TYPE); @@ -1298,13 +1298,13 @@ App::patch('/v1/users/:userId/targets/:targetId') throw new Exception(Exception::GENERAL_INVALID_EMAIL); } break; - case 'sms': + case MESSAGE_TYPE_SMS: $validator = new Phone(); if (!$validator->isValid($identifier)) { throw new Exception(Exception::GENERAL_INVALID_PHONE); } break; - case 'push': + case MESSAGE_TYPE_PUSH: break; default: throw new Exception(Exception::PROVIDER_INCORRECT_TYPE); diff --git a/app/init.php b/app/init.php index 6f61b955f3..800b32fdd0 100644 --- a/app/init.php +++ b/app/init.php @@ -190,6 +190,10 @@ const MAX_OUTPUT_CHUNK_SIZE = 2 * 1024 * 1024; // 2MB // Function headers const FUNCTION_ALLOWLIST_HEADERS_REQUEST = ['content-type', 'agent', 'content-length', 'host']; const FUNCTION_ALLOWLIST_HEADERS_RESPONSE = ['content-type', 'content-length']; +// Message types +const MESSAGE_TYPE_EMAIL = 'email'; +const MESSAGE_TYPE_SMS = 'sms'; +const MESSAGE_TYPE_PUSH = 'push'; // Usage metrics const METRIC_TEAMS = 'teams'; const METRIC_USERS = 'users'; @@ -607,11 +611,11 @@ Database::addFilter( $data = \json_decode($message->getAttribute('data', []), true); if (\array_key_exists('subject', $data)) { - $searchValues = \array_merge($searchValues, [$data['subject'], 'email']); + $searchValues = \array_merge($searchValues, [$data['subject'], MESSAGE_TYPE_EMAIL]); } elseif (\array_key_exists('content', $data)) { - $searchValues = \array_merge($searchValues, [$data['content'], 'sms']); + $searchValues = \array_merge($searchValues, [$data['content'], MESSAGE_TYPE_SMS]); } else { - $searchValues = \array_merge($searchValues, [$data['title'], 'push']); + $searchValues = \array_merge($searchValues, [$data['title'], MESSAGE_TYPE_PUSH]); } $search = \implode(' ', \array_filter($searchValues)); diff --git a/src/Appwrite/Platform/Workers/Messaging.php b/src/Appwrite/Platform/Workers/Messaging.php index 8488d8a9e4..200bb06212 100644 --- a/src/Appwrite/Platform/Workers/Messaging.php +++ b/src/Appwrite/Platform/Workers/Messaging.php @@ -67,7 +67,7 @@ class Messaging extends Action } if (!\is_null($payload['message']) && !\is_null($payload['recipients'])) { - if ($payload['providerType'] === 'SMS') { + if ($payload['providerType'] === MESSAGE_TYPE_SMS) { $this->processInternalSMSMessage(new Document($payload['message']), $payload['recipients']); } } else { @@ -155,9 +155,9 @@ class Messaging extends Action $identifiers = $identifiersByProviderId[$providerId]; $adapter = match ($provider->getAttribute('type')) { - 'sms' => $this->sms($provider), - 'push' => $this->push($provider), - 'email' => $this->email($provider), + MESSAGE_TYPE_SMS => $this->sms($provider), + MESSAGE_TYPE_PUSH => $this->push($provider), + MESSAGE_TYPE_EMAIL => $this->email($provider), default => throw new Exception(Exception::PROVIDER_INCORRECT_TYPE) }; @@ -173,9 +173,9 @@ class Messaging extends Action $messageData->setAttribute('to', $batch); $data = match ($provider->getAttribute('type')) { - 'sms' => $this->buildSMSMessage($messageData, $provider), - 'push' => $this->buildPushMessage($messageData), - 'email' => $this->buildEmailMessage($messageData, $provider), + MESSAGE_TYPE_SMS => $this->buildSMSMessage($messageData, $provider), + MESSAGE_TYPE_PUSH => $this->buildPushMessage($messageData), + MESSAGE_TYPE_EMAIL => $this->buildEmailMessage($messageData, $provider), default => throw new Exception(Exception::PROVIDER_INCORRECT_TYPE) }; @@ -245,7 +245,7 @@ class Messaging extends Action $provider = new Document([ '$id' => ID::unique(), 'provider' => $host, - 'type' => 'sms', + 'type' => MESSAGE_TYPE_SMS, 'name' => 'Internal SMS', 'enabled' => true, 'credentials' => match ($host) { diff --git a/src/Appwrite/Utopia/Response/Model/Provider.php b/src/Appwrite/Utopia/Response/Model/Provider.php index f8a0514020..d3de061aab 100644 --- a/src/Appwrite/Utopia/Response/Model/Provider.php +++ b/src/Appwrite/Utopia/Response/Model/Provider.php @@ -50,7 +50,7 @@ class Provider extends Model 'type' => self::TYPE_STRING, 'description' => 'Type of provider.', 'default' => '', - 'example' => 'sms', + 'example' => MESSAGE_TYPE_SMS, ]) ->addRule('credentials', [ 'type' => self::TYPE_JSON,