update: address comments.

regen: specs.
This commit is contained in:
Darshan
2026-01-14 15:29:30 +05:30
parent 91240e0ca7
commit 0ec515779e
8 changed files with 98 additions and 150 deletions
@@ -2584,7 +2584,9 @@
"yammer",
"yandex",
"zoho",
"zoom"
"zoom",
"mock",
"mock-unverified"
],
"x-enum-name": "OAuthProvider",
"x-enum-keys": []
@@ -3516,7 +3518,9 @@
"yammer",
"yandex",
"zoho",
"zoom"
"zoom",
"mock",
"mock-unverified"
],
"x-enum-name": "OAuthProvider",
"x-enum-keys": []
@@ -2594,7 +2594,9 @@
"yammer",
"yandex",
"zoho",
"zoom"
"zoom",
"mock",
"mock-unverified"
],
"x-enum-name": "OAuthProvider",
"x-enum-keys": []
@@ -3514,7 +3516,9 @@
"yammer",
"yandex",
"zoho",
"zoom"
"zoom",
"mock",
"mock-unverified"
],
"x-enum-name": "OAuthProvider",
"x-enum-keys": []
@@ -28250,7 +28254,9 @@
"yammer",
"yandex",
"zoho",
"zoom"
"zoom",
"mock",
"mock-unverified"
],
"x-enum-name": "OAuthProvider",
"x-enum-keys": []
@@ -3217,7 +3217,9 @@
"yammer",
"yandex",
"zoho",
"zoom"
"zoom",
"mock",
"mock-unverified"
],
"x-enum-name": "OAuthProvider",
"x-enum-keys": []
+6 -2
View File
@@ -2694,7 +2694,9 @@
"yammer",
"yandex",
"zoho",
"zoom"
"zoom",
"mock",
"mock-unverified"
],
"x-enum-name": "OAuthProvider",
"x-enum-keys": [],
@@ -3650,7 +3652,9 @@
"yammer",
"yandex",
"zoho",
"zoom"
"zoom",
"mock",
"mock-unverified"
],
"x-enum-name": "OAuthProvider",
"x-enum-keys": [],
@@ -2720,7 +2720,9 @@
"yammer",
"yandex",
"zoho",
"zoom"
"zoom",
"mock",
"mock-unverified"
],
"x-enum-name": "OAuthProvider",
"x-enum-keys": [],
@@ -3664,7 +3666,9 @@
"yammer",
"yandex",
"zoho",
"zoom"
"zoom",
"mock",
"mock-unverified"
],
"x-enum-name": "OAuthProvider",
"x-enum-keys": [],
@@ -28351,7 +28355,9 @@
"yammer",
"yandex",
"zoho",
"zoom"
"zoom",
"mock",
"mock-unverified"
],
"x-enum-name": "OAuthProvider",
"x-enum-keys": []
+3 -1
View File
@@ -3357,7 +3357,9 @@
"yammer",
"yandex",
"zoho",
"zoom"
"zoom",
"mock",
"mock-unverified"
],
"x-enum-name": "OAuthProvider",
"x-enum-keys": [],
@@ -12,7 +12,6 @@ use Appwrite\Template\Template;
use Appwrite\Utopia\Database\Validator\Operation;
use Appwrite\Utopia\Response\Model;
use Appwrite\Utopia\Response\Model\Any;
use Utopia\Config\Config;
use Utopia\Database\Database;
use Utopia\Database\Helpers\Permission;
use Utopia\Database\Helpers\Role;
@@ -585,18 +584,31 @@ class OpenAPI3 extends Format
// Iterate from the blackList. If it matches with the current one, then it is a blackList
// Do not add the enum
$allowed = true;
$excludeKeys = null;
foreach ($this->enumBlacklist as $blacklist) {
if (
$blacklist['namespace'] == $sdk->getNamespace()
&& $blacklist['method'] == $methodName
&& $blacklist['parameter'] == $name
) {
$allowed = false;
// 'exclude' => true means full exclude
if (isset($blacklist['exclude']) && $blacklist['exclude'] === true) {
$allowed = false;
break;
}
if (isset($blacklist['excludeKeys'])) {
$excludeKeys = $blacklist['excludeKeys'];
}
break;
}
}
if ($allowed && $validator->getType() === 'string') {
$node['schema']['items']['enum'] = \array_values($validator->getList());
$enumValues = \array_values($validator->getList());
if ($excludeKeys !== null) {
$enumValues = \array_values(\array_filter($enumValues, fn ($key) => !\in_array($key, $excludeKeys, true)));
}
$node['schema']['items']['enum'] = $enumValues;
$node['schema']['items']['x-enum-name'] = $this->getRequestEnumName($sdk->getNamespace() ?? '', $methodName, $name);
$node['schema']['items']['x-enum-keys'] = $this->getRequestEnumKeys($sdk->getNamespace() ?? '', $methodName, $name);
}
@@ -610,18 +622,31 @@ class OpenAPI3 extends Format
// Iterate from the blackList. If it matches with the current one, then it is a blackList
// Do not add the enum
$allowed = true;
$excludeKeys = null;
foreach ($this->enumBlacklist as $blacklist) {
if (
$blacklist['namespace'] == $sdk->getNamespace()
&& $blacklist['method'] == $methodName
&& $blacklist['parameter'] == $name
) {
$allowed = false;
// 'exclude' => true means full exclude
if (isset($blacklist['exclude']) && $blacklist['exclude'] === true) {
$allowed = false;
break;
}
if (isset($blacklist['excludeKeys'])) {
$excludeKeys = $blacklist['excludeKeys'];
}
break;
}
}
if ($allowed && $validator->getType() === 'string') {
$node['schema']['enum'] = \array_values($validator->getList());
$enumValues = \array_values($validator->getList());
if ($excludeKeys !== null) {
$enumValues = \array_values(\array_filter($enumValues, fn ($key) => !\in_array($key, $excludeKeys, true)));
}
$node['schema']['enum'] = $enumValues;
$node['schema']['x-enum-name'] = $this->getRequestEnumName($sdk->getNamespace() ?? '', $methodName, $name);
$node['schema']['x-enum-keys'] = $this->getRequestEnumKeys($sdk->getNamespace() ?? '', $methodName, $name);
}
@@ -907,68 +932,6 @@ class OpenAPI3 extends Format
\ksort($output['paths']);
return $this->filterOAuthProviders($output);
}
/**
* Filter OAuth providers from spec.
*
* @param array $spec
* @return array
*/
protected function filterOAuthProviders(array $spec): array
{
if (!isset($spec['paths'])) {
return $spec;
}
$oAuthProviders = Config::getParam('oAuthProviders', []);
foreach ($spec['paths'] as &$path) {
foreach ($path as &$method) {
if (isset($method['parameters'])) {
foreach ($method['parameters'] as &$param) {
if (isset($param['name']) && $param['name'] === 'provider') {
if (isset($param['schema']['enum'])) {
$param['schema']['enum'] = $this->filterProviderList($param['schema']['enum'], $oAuthProviders, 'mock');
}
if (isset($param['schema']['items']['enum'])) {
$param['schema']['items']['enum'] = $this->filterProviderList($param['schema']['items']['enum'], $oAuthProviders, 'mock');
}
}
}
}
// Also check requestBody for provider parameter
if (isset($method['requestBody']['content']['application/json']['schema']['properties']['provider'])) {
$providerProp = &$method['requestBody']['content']['application/json']['schema']['properties']['provider'];
if (isset($providerProp['enum'])) {
$providerProp['enum'] = $this->filterProviderList($providerProp['enum'], $oAuthProviders, 'mock');
}
if (isset($providerProp['items']['enum'])) {
$providerProp['items']['enum'] = $this->filterProviderList($providerProp['items']['enum'], $oAuthProviders, 'mock');
}
}
}
}
return $spec;
}
/**
* Filter provider list to remove providers based on a given key
*
* @param array $providers
* @param array $oAuthProviders
* @param string $key
* @return array
*/
protected function filterProviderList(
array $providers,
array $oAuthProviders,
string $key,
): array {
return array_values(array_filter($providers, fn ($provider) => empty($oAuthProviders[$provider][$key])));
return $output;
}
}
@@ -12,7 +12,6 @@ use Appwrite\Template\Template;
use Appwrite\Utopia\Database\Validator\Operation;
use Appwrite\Utopia\Response\Model;
use Appwrite\Utopia\Response\Model\Any;
use Utopia\Config\Config;
use Utopia\Database\Database;
use Utopia\Database\Helpers\Permission;
use Utopia\Database\Helpers\Role;
@@ -572,16 +571,28 @@ class Swagger2 extends Format
$node['x-example'] = $param['example'];
}
// Iterate the blackList. If it matches with the current one, then it is blackListed
$allowed = true;
$excludeKeys = null;
foreach ($this->enumBlacklist as $blacklist) {
if ($blacklist['namespace'] == $namespace && $blacklist['method'] == $methodName && $blacklist['parameter'] == $name) {
$allowed = false;
// 'exclude' => true means full exclude
if (isset($blacklist['exclude']) && $blacklist['exclude'] === true) {
$allowed = false;
break;
}
if (isset($blacklist['excludeKeys'])) {
$excludeKeys = $blacklist['excludeKeys'];
}
break;
}
}
if ($allowed && $validator->getType() === 'string') {
$node['items']['enum'] = \array_values($validator->getList());
$enumValues = \array_values($validator->getList());
if ($excludeKeys !== null) {
$enumValues = \array_values(\array_filter($enumValues, fn ($key) => !\in_array($key, $excludeKeys, true)));
}
$node['items']['enum'] = $enumValues;
$node['items']['x-enum-name'] = $this->getRequestEnumName($namespace, $methodName, $name);
$node['items']['x-enum-keys'] = $this->getRequestEnumKeys($namespace, $methodName, $name);
}
@@ -592,16 +603,28 @@ class Swagger2 extends Format
$node['type'] = $validator->getType();
$node['x-example'] = ($param['example'] ?? '') ?: $validator->getList()[0];
// Iterate the blackList. If it matches with the current one, then it is blackListed
$allowed = true;
$excludeKeys = null;
foreach ($this->enumBlacklist as $blacklist) {
if ($blacklist['namespace'] == $namespace && $blacklist['method'] == $methodName && $blacklist['parameter'] == $name) {
$allowed = false;
// 'exclude' => true means full exclude
if (isset($blacklist['exclude']) && $blacklist['exclude'] === true) {
$allowed = false;
break;
}
if (isset($blacklist['excludeKeys'])) {
$excludeKeys = $blacklist['excludeKeys'];
}
break;
}
}
if ($allowed && $validator->getType() === 'string') {
$node['enum'] = \array_values($validator->getList());
$enumValues = \array_values($validator->getList());
if ($excludeKeys !== null) {
$enumValues = \array_values(\array_filter($enumValues, fn ($key) => !\in_array($key, $excludeKeys, true)));
}
$node['enum'] = $enumValues;
$node['x-enum-name'] = $this->getRequestEnumName($namespace, $methodName, $name);
$node['x-enum-keys'] = $this->getRequestEnumKeys($namespace, $methodName, $name);
}
@@ -903,68 +926,6 @@ class Swagger2 extends Format
\ksort($output['paths']);
return $this->filterOAuthProviders($output);
}
/**
* Filter OAuth providers from spec.
*
* @param array $spec
* @return array
*/
protected function filterOAuthProviders(array $spec): array
{
if (!isset($spec['paths'])) {
return $spec;
}
$oAuthProviders = Config::getParam('oAuthProviders', []);
foreach ($spec['paths'] as &$path) {
foreach ($path as &$method) {
if (isset($method['parameters'])) {
foreach ($method['parameters'] as &$param) {
if (isset($param['name']) && $param['name'] === 'provider') {
if (isset($param['enum'])) {
$param['enum'] = $this->filterProviderList($param['enum'], $oAuthProviders, 'mock');
}
if (isset($param['items']['enum'])) {
$param['items']['enum'] = $this->filterProviderList($param['items']['enum'], $oAuthProviders, 'mock');
}
}
if (isset($param['schema']['properties']['provider'])) {
if (isset($param['schema']['properties']['provider']['enum'])) {
$param['schema']['properties']['provider']['enum'] =
$this->filterProviderList($param['schema']['properties']['provider']['enum'], $oAuthProviders, 'mock');
}
if (isset($param['schema']['properties']['provider']['items']['enum'])) {
$param['schema']['properties']['provider']['items']['enum'] =
$this->filterProviderList($param['schema']['properties']['provider']['items']['enum'], $oAuthProviders, 'mock');
}
}
}
}
}
}
return $spec;
}
/**
* Filter provider list to remove providers based on a given key.
*
* @param array $providers
* @param array $oAuthProviders
* @param string $key
* @return array
*/
protected function filterProviderList(
array $providers,
array $oAuthProviders,
string $key,
): array {
return array_values(array_filter($providers, fn ($provider) => empty($oAuthProviders[$provider][$key])));
return $output;
}
}