mirror of
https://github.com/appwrite/appwrite
synced 2026-05-24 01:18:37 +00:00
Merge pull request #11132 from appwrite/fix-sdk-handling
This commit is contained in:
commit
3bbfbdb063
16 changed files with 229 additions and 107 deletions
|
|
@ -2584,9 +2584,7 @@
|
|||
"yammer",
|
||||
"yandex",
|
||||
"zoho",
|
||||
"zoom",
|
||||
"mock",
|
||||
"mock-unverified"
|
||||
"zoom"
|
||||
],
|
||||
"x-enum-name": "OAuthProvider",
|
||||
"x-enum-keys": []
|
||||
|
|
@ -3518,9 +3516,7 @@
|
|||
"yammer",
|
||||
"yandex",
|
||||
"zoho",
|
||||
"zoom",
|
||||
"mock",
|
||||
"mock-unverified"
|
||||
"zoom"
|
||||
],
|
||||
"x-enum-name": "OAuthProvider",
|
||||
"x-enum-keys": []
|
||||
|
|
|
|||
|
|
@ -2594,9 +2594,7 @@
|
|||
"yammer",
|
||||
"yandex",
|
||||
"zoho",
|
||||
"zoom",
|
||||
"mock",
|
||||
"mock-unverified"
|
||||
"zoom"
|
||||
],
|
||||
"x-enum-name": "OAuthProvider",
|
||||
"x-enum-keys": []
|
||||
|
|
@ -3516,9 +3514,7 @@
|
|||
"yammer",
|
||||
"yandex",
|
||||
"zoho",
|
||||
"zoom",
|
||||
"mock",
|
||||
"mock-unverified"
|
||||
"zoom"
|
||||
],
|
||||
"x-enum-name": "OAuthProvider",
|
||||
"x-enum-keys": []
|
||||
|
|
@ -28254,9 +28250,7 @@
|
|||
"yammer",
|
||||
"yandex",
|
||||
"zoho",
|
||||
"zoom",
|
||||
"mock",
|
||||
"mock-unverified"
|
||||
"zoom"
|
||||
],
|
||||
"x-enum-name": "OAuthProvider",
|
||||
"x-enum-keys": []
|
||||
|
|
@ -61445,7 +61439,7 @@
|
|||
"status": {
|
||||
"type": "string",
|
||||
"description": "Status of delivery.",
|
||||
"x-example": "Message status can be one of the following: draft, processing, scheduled, sent, or failed.",
|
||||
"x-example": "processing",
|
||||
"enum": [
|
||||
"draft",
|
||||
"processing",
|
||||
|
|
@ -61491,7 +61485,7 @@
|
|||
"subject": "Welcome to Appwrite",
|
||||
"content": "Hi there, welcome to Appwrite family."
|
||||
},
|
||||
"status": "Message status can be one of the following: draft, processing, scheduled, sent, or failed."
|
||||
"status": "processing"
|
||||
}
|
||||
},
|
||||
"topic": {
|
||||
|
|
|
|||
|
|
@ -3217,9 +3217,7 @@
|
|||
"yammer",
|
||||
"yandex",
|
||||
"zoho",
|
||||
"zoom",
|
||||
"mock",
|
||||
"mock-unverified"
|
||||
"zoom"
|
||||
],
|
||||
"x-enum-name": "OAuthProvider",
|
||||
"x-enum-keys": []
|
||||
|
|
@ -45416,7 +45414,7 @@
|
|||
"status": {
|
||||
"type": "string",
|
||||
"description": "Status of delivery.",
|
||||
"x-example": "Message status can be one of the following: draft, processing, scheduled, sent, or failed.",
|
||||
"x-example": "processing",
|
||||
"enum": [
|
||||
"draft",
|
||||
"processing",
|
||||
|
|
@ -45462,7 +45460,7 @@
|
|||
"subject": "Welcome to Appwrite",
|
||||
"content": "Hi there, welcome to Appwrite family."
|
||||
},
|
||||
"status": "Message status can be one of the following: draft, processing, scheduled, sent, or failed."
|
||||
"status": "processing"
|
||||
}
|
||||
},
|
||||
"topic": {
|
||||
|
|
|
|||
|
|
@ -2584,9 +2584,7 @@
|
|||
"yammer",
|
||||
"yandex",
|
||||
"zoho",
|
||||
"zoom",
|
||||
"mock",
|
||||
"mock-unverified"
|
||||
"zoom"
|
||||
],
|
||||
"x-enum-name": "OAuthProvider",
|
||||
"x-enum-keys": []
|
||||
|
|
@ -3518,9 +3516,7 @@
|
|||
"yammer",
|
||||
"yandex",
|
||||
"zoho",
|
||||
"zoom",
|
||||
"mock",
|
||||
"mock-unverified"
|
||||
"zoom"
|
||||
],
|
||||
"x-enum-name": "OAuthProvider",
|
||||
"x-enum-keys": []
|
||||
|
|
|
|||
|
|
@ -2594,9 +2594,7 @@
|
|||
"yammer",
|
||||
"yandex",
|
||||
"zoho",
|
||||
"zoom",
|
||||
"mock",
|
||||
"mock-unverified"
|
||||
"zoom"
|
||||
],
|
||||
"x-enum-name": "OAuthProvider",
|
||||
"x-enum-keys": []
|
||||
|
|
@ -3516,9 +3514,7 @@
|
|||
"yammer",
|
||||
"yandex",
|
||||
"zoho",
|
||||
"zoom",
|
||||
"mock",
|
||||
"mock-unverified"
|
||||
"zoom"
|
||||
],
|
||||
"x-enum-name": "OAuthProvider",
|
||||
"x-enum-keys": []
|
||||
|
|
@ -28254,9 +28250,7 @@
|
|||
"yammer",
|
||||
"yandex",
|
||||
"zoho",
|
||||
"zoom",
|
||||
"mock",
|
||||
"mock-unverified"
|
||||
"zoom"
|
||||
],
|
||||
"x-enum-name": "OAuthProvider",
|
||||
"x-enum-keys": []
|
||||
|
|
|
|||
|
|
@ -3217,9 +3217,7 @@
|
|||
"yammer",
|
||||
"yandex",
|
||||
"zoho",
|
||||
"zoom",
|
||||
"mock",
|
||||
"mock-unverified"
|
||||
"zoom"
|
||||
],
|
||||
"x-enum-name": "OAuthProvider",
|
||||
"x-enum-keys": []
|
||||
|
|
|
|||
|
|
@ -2694,9 +2694,7 @@
|
|||
"yammer",
|
||||
"yandex",
|
||||
"zoho",
|
||||
"zoom",
|
||||
"mock",
|
||||
"mock-unverified"
|
||||
"zoom"
|
||||
],
|
||||
"x-enum-name": "OAuthProvider",
|
||||
"x-enum-keys": [],
|
||||
|
|
@ -3652,9 +3650,7 @@
|
|||
"yammer",
|
||||
"yandex",
|
||||
"zoho",
|
||||
"zoom",
|
||||
"mock",
|
||||
"mock-unverified"
|
||||
"zoom"
|
||||
],
|
||||
"x-enum-name": "OAuthProvider",
|
||||
"x-enum-keys": [],
|
||||
|
|
|
|||
|
|
@ -2720,9 +2720,7 @@
|
|||
"yammer",
|
||||
"yandex",
|
||||
"zoho",
|
||||
"zoom",
|
||||
"mock",
|
||||
"mock-unverified"
|
||||
"zoom"
|
||||
],
|
||||
"x-enum-name": "OAuthProvider",
|
||||
"x-enum-keys": [],
|
||||
|
|
@ -3666,9 +3664,7 @@
|
|||
"yammer",
|
||||
"yandex",
|
||||
"zoho",
|
||||
"zoom",
|
||||
"mock",
|
||||
"mock-unverified"
|
||||
"zoom"
|
||||
],
|
||||
"x-enum-name": "OAuthProvider",
|
||||
"x-enum-keys": [],
|
||||
|
|
@ -28355,9 +28351,7 @@
|
|||
"yammer",
|
||||
"yandex",
|
||||
"zoho",
|
||||
"zoom",
|
||||
"mock",
|
||||
"mock-unverified"
|
||||
"zoom"
|
||||
],
|
||||
"x-enum-name": "OAuthProvider",
|
||||
"x-enum-keys": []
|
||||
|
|
@ -61384,7 +61378,7 @@
|
|||
"status": {
|
||||
"type": "string",
|
||||
"description": "Status of delivery.",
|
||||
"x-example": "Message status can be one of the following: draft, processing, scheduled, sent, or failed.",
|
||||
"x-example": "processing",
|
||||
"enum": [
|
||||
"draft",
|
||||
"processing",
|
||||
|
|
@ -61430,7 +61424,7 @@
|
|||
"subject": "Welcome to Appwrite",
|
||||
"content": "Hi there, welcome to Appwrite family."
|
||||
},
|
||||
"status": "Message status can be one of the following: draft, processing, scheduled, sent, or failed."
|
||||
"status": "processing"
|
||||
}
|
||||
},
|
||||
"topic": {
|
||||
|
|
|
|||
|
|
@ -3357,9 +3357,7 @@
|
|||
"yammer",
|
||||
"yandex",
|
||||
"zoho",
|
||||
"zoom",
|
||||
"mock",
|
||||
"mock-unverified"
|
||||
"zoom"
|
||||
],
|
||||
"x-enum-name": "OAuthProvider",
|
||||
"x-enum-keys": [],
|
||||
|
|
@ -45349,7 +45347,7 @@
|
|||
"status": {
|
||||
"type": "string",
|
||||
"description": "Status of delivery.",
|
||||
"x-example": "Message status can be one of the following: draft, processing, scheduled, sent, or failed.",
|
||||
"x-example": "processing",
|
||||
"enum": [
|
||||
"draft",
|
||||
"processing",
|
||||
|
|
@ -45395,7 +45393,7 @@
|
|||
"subject": "Welcome to Appwrite",
|
||||
"content": "Hi there, welcome to Appwrite family."
|
||||
},
|
||||
"status": "Message status can be one of the following: draft, processing, scheduled, sent, or failed."
|
||||
"status": "processing"
|
||||
}
|
||||
},
|
||||
"topic": {
|
||||
|
|
|
|||
|
|
@ -2694,9 +2694,7 @@
|
|||
"yammer",
|
||||
"yandex",
|
||||
"zoho",
|
||||
"zoom",
|
||||
"mock",
|
||||
"mock-unverified"
|
||||
"zoom"
|
||||
],
|
||||
"x-enum-name": "OAuthProvider",
|
||||
"x-enum-keys": [],
|
||||
|
|
@ -3652,9 +3650,7 @@
|
|||
"yammer",
|
||||
"yandex",
|
||||
"zoho",
|
||||
"zoom",
|
||||
"mock",
|
||||
"mock-unverified"
|
||||
"zoom"
|
||||
],
|
||||
"x-enum-name": "OAuthProvider",
|
||||
"x-enum-keys": [],
|
||||
|
|
|
|||
|
|
@ -2720,9 +2720,7 @@
|
|||
"yammer",
|
||||
"yandex",
|
||||
"zoho",
|
||||
"zoom",
|
||||
"mock",
|
||||
"mock-unverified"
|
||||
"zoom"
|
||||
],
|
||||
"x-enum-name": "OAuthProvider",
|
||||
"x-enum-keys": [],
|
||||
|
|
@ -3666,9 +3664,7 @@
|
|||
"yammer",
|
||||
"yandex",
|
||||
"zoho",
|
||||
"zoom",
|
||||
"mock",
|
||||
"mock-unverified"
|
||||
"zoom"
|
||||
],
|
||||
"x-enum-name": "OAuthProvider",
|
||||
"x-enum-keys": [],
|
||||
|
|
@ -28355,9 +28351,7 @@
|
|||
"yammer",
|
||||
"yandex",
|
||||
"zoho",
|
||||
"zoom",
|
||||
"mock",
|
||||
"mock-unverified"
|
||||
"zoom"
|
||||
],
|
||||
"x-enum-name": "OAuthProvider",
|
||||
"x-enum-keys": []
|
||||
|
|
|
|||
|
|
@ -3357,9 +3357,7 @@
|
|||
"yammer",
|
||||
"yandex",
|
||||
"zoho",
|
||||
"zoom",
|
||||
"mock",
|
||||
"mock-unverified"
|
||||
"zoom"
|
||||
],
|
||||
"x-enum-name": "OAuthProvider",
|
||||
"x-enum-keys": [],
|
||||
|
|
|
|||
12
composer.lock
generated
12
composer.lock
generated
|
|
@ -5481,16 +5481,16 @@
|
|||
"packages-dev": [
|
||||
{
|
||||
"name": "appwrite/sdk-generator",
|
||||
"version": "1.8.11",
|
||||
"version": "1.8.14",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/appwrite/sdk-generator.git",
|
||||
"reference": "936404bbcbf4cd692bac102f2912b6c97ac87215"
|
||||
"reference": "a43e8ba5d539e48f0717df284dbd5dc1fb659d6b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/936404bbcbf4cd692bac102f2912b6c97ac87215",
|
||||
"reference": "936404bbcbf4cd692bac102f2912b6c97ac87215",
|
||||
"url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/a43e8ba5d539e48f0717df284dbd5dc1fb659d6b",
|
||||
"reference": "a43e8ba5d539e48f0717df284dbd5dc1fb659d6b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -5526,9 +5526,9 @@
|
|||
"description": "Appwrite PHP library for generating API SDKs for multiple programming languages and platforms",
|
||||
"support": {
|
||||
"issues": "https://github.com/appwrite/sdk-generator/issues",
|
||||
"source": "https://github.com/appwrite/sdk-generator/tree/1.8.11"
|
||||
"source": "https://github.com/appwrite/sdk-generator/tree/1.8.14"
|
||||
},
|
||||
"time": "2026-01-12T08:41:56+00:00"
|
||||
"time": "2026-01-14T10:42:32+00:00"
|
||||
},
|
||||
{
|
||||
"name": "doctrine/annotations",
|
||||
|
|
|
|||
|
|
@ -40,17 +40,46 @@ abstract class Format
|
|||
'license.url' => '',
|
||||
];
|
||||
|
||||
/*
|
||||
* Blacklist to omit the enum types for the given route's parameter
|
||||
*/
|
||||
protected array $enumBlacklist = [
|
||||
private const array OAUTH_PROVIDER_BLACKLIST = [
|
||||
[
|
||||
'namespace' => 'account',
|
||||
'methods' => [
|
||||
'createOAuth2Session',
|
||||
'createOAuth2Token',
|
||||
'updateMagicURLSession'
|
||||
],
|
||||
'parameter' => 'provider',
|
||||
'excludeKeys' => [
|
||||
'mock',
|
||||
'mock-unverified'
|
||||
],
|
||||
],
|
||||
[
|
||||
'namespace' => 'projects',
|
||||
'methods' => [
|
||||
'updateOAuth2'
|
||||
],
|
||||
'parameter' => 'provider',
|
||||
'excludeKeys' => [
|
||||
'mock',
|
||||
'mock-unverified'
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
private const array PROVIDER_USAGE_BLACKLIST = [
|
||||
[
|
||||
'namespace' => 'users',
|
||||
'method' => 'getUsage',
|
||||
'parameter' => 'provider'
|
||||
]
|
||||
'methods' => [
|
||||
'getUsage'
|
||||
],
|
||||
'parameter' => 'provider',
|
||||
'exclude' => true, /* fully excluded */
|
||||
],
|
||||
];
|
||||
|
||||
protected array $enumBlacklist = [];
|
||||
|
||||
public function __construct(App $app, array $services, array $routes, array $models, array $keys, int $authCount, string $platform)
|
||||
{
|
||||
$this->app = $app;
|
||||
|
|
@ -60,6 +89,49 @@ abstract class Format
|
|||
$this->keys = $keys;
|
||||
$this->authCount = $authCount;
|
||||
$this->platform = $platform;
|
||||
|
||||
$this->enumBlacklist = $this->buildEnumBlacklist();
|
||||
}
|
||||
|
||||
protected function buildEnumBlacklist(): array
|
||||
{
|
||||
$blacklist = [];
|
||||
|
||||
foreach (self::OAUTH_PROVIDER_BLACKLIST as $config) {
|
||||
foreach ($config['methods'] as $method) {
|
||||
$entry = [
|
||||
'namespace' => $config['namespace'],
|
||||
'method' => $method,
|
||||
'parameter' => $config['parameter'],
|
||||
];
|
||||
if (isset($config['excludeKeys'])) {
|
||||
$entry['excludeKeys'] = $config['excludeKeys'];
|
||||
}
|
||||
if (isset($config['exclude'])) {
|
||||
$entry['exclude'] = $config['exclude'];
|
||||
}
|
||||
$blacklist[] = $entry;
|
||||
}
|
||||
}
|
||||
|
||||
foreach (self::PROVIDER_USAGE_BLACKLIST as $config) {
|
||||
foreach ($config['methods'] as $method) {
|
||||
$entry = [
|
||||
'namespace' => $config['namespace'],
|
||||
'method' => $method,
|
||||
'parameter' => $config['parameter'],
|
||||
];
|
||||
if (isset($config['excludeKeys'])) {
|
||||
$entry['excludeKeys'] = $config['excludeKeys'];
|
||||
}
|
||||
if (isset($config['exclude'])) {
|
||||
$entry['exclude'] = $config['exclude'];
|
||||
}
|
||||
$blacklist[] = $entry;
|
||||
}
|
||||
}
|
||||
|
||||
return $blacklist;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -584,20 +584,45 @@ 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());
|
||||
$allValues = \array_values($validator->getList());
|
||||
$allKeys = $this->getRequestEnumKeys($sdk->getNamespace() ?? '', $methodName, $name);
|
||||
|
||||
if ($excludeKeys !== null) {
|
||||
$keepIndices = [];
|
||||
foreach ($allValues as $index => $value) {
|
||||
if (!\in_array($value, $excludeKeys, true)) {
|
||||
$keepIndices[] = $index;
|
||||
}
|
||||
}
|
||||
$enumKeys = \array_values(\array_intersect_key($allKeys, \array_flip($keepIndices)));
|
||||
$enumValues = \array_values(\array_intersect_key($allValues, \array_flip($keepIndices)));
|
||||
} else {
|
||||
$enumKeys = $allKeys;
|
||||
$enumValues = $allValues;
|
||||
}
|
||||
$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);
|
||||
$node['schema']['items']['x-enum-keys'] = $enumKeys;
|
||||
}
|
||||
if ($validator->getType() === 'integer') {
|
||||
$node['schema']['items']['format'] = $validator->getFormat() ?? 'int32';
|
||||
|
|
@ -609,20 +634,45 @@ 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());
|
||||
$allValues = \array_values($validator->getList());
|
||||
$allKeys = $this->getRequestEnumKeys($sdk->getNamespace() ?? '', $methodName, $name);
|
||||
|
||||
if ($excludeKeys !== null) {
|
||||
$keepIndices = [];
|
||||
foreach ($allValues as $index => $value) {
|
||||
if (!\in_array($value, $excludeKeys, true)) {
|
||||
$keepIndices[] = $index;
|
||||
}
|
||||
}
|
||||
$enumKeys = \array_values(\array_intersect_key($allKeys, \array_flip($keepIndices)));
|
||||
$enumValues = \array_values(\array_intersect_key($allValues, \array_flip($keepIndices)));
|
||||
} else {
|
||||
$enumKeys = $allKeys;
|
||||
$enumValues = $allValues;
|
||||
}
|
||||
$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);
|
||||
$node['schema']['x-enum-keys'] = $enumKeys;
|
||||
}
|
||||
if ($validator->getType() === 'integer') {
|
||||
$node['schema']['format'] = $validator->getFormat() ?? 'int32';
|
||||
|
|
|
|||
|
|
@ -571,18 +571,42 @@ 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());
|
||||
$allValues = \array_values($validator->getList());
|
||||
$allKeys = $this->getRequestEnumKeys($namespace, $methodName, $name);
|
||||
|
||||
if ($excludeKeys !== null) {
|
||||
$keepIndices = [];
|
||||
foreach ($allValues as $index => $value) {
|
||||
if (!\in_array($value, $excludeKeys, true)) {
|
||||
$keepIndices[] = $index;
|
||||
}
|
||||
}
|
||||
$enumKeys = \array_values(\array_intersect_key($allKeys, \array_flip($keepIndices)));
|
||||
$enumValues = \array_values(\array_intersect_key($allValues, \array_flip($keepIndices)));
|
||||
} else {
|
||||
$enumKeys = $allKeys;
|
||||
$enumValues = $allValues;
|
||||
}
|
||||
$node['items']['enum'] = $enumValues;
|
||||
$node['items']['x-enum-name'] = $this->getRequestEnumName($namespace, $methodName, $name);
|
||||
$node['items']['x-enum-keys'] = $this->getRequestEnumKeys($namespace, $methodName, $name);
|
||||
$node['items']['x-enum-keys'] = $enumKeys;
|
||||
}
|
||||
if ($validator->getType() === 'integer') {
|
||||
$node['items']['format'] = $validator->getFormat() ?? 'int32';
|
||||
|
|
@ -591,18 +615,42 @@ 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());
|
||||
$allValues = \array_values($validator->getList());
|
||||
$allKeys = $this->getRequestEnumKeys($namespace, $methodName, $name);
|
||||
|
||||
if ($excludeKeys !== null) {
|
||||
$keepIndices = [];
|
||||
foreach ($allValues as $index => $value) {
|
||||
if (!\in_array($value, $excludeKeys, true)) {
|
||||
$keepIndices[] = $index;
|
||||
}
|
||||
}
|
||||
$enumKeys = \array_values(\array_intersect_key($allKeys, \array_flip($keepIndices)));
|
||||
$enumValues = \array_values(\array_intersect_key($allValues, \array_flip($keepIndices)));
|
||||
} else {
|
||||
$enumKeys = $allKeys;
|
||||
$enumValues = $allValues;
|
||||
}
|
||||
$node['enum'] = $enumValues;
|
||||
$node['x-enum-name'] = $this->getRequestEnumName($namespace, $methodName, $name);
|
||||
$node['x-enum-keys'] = $this->getRequestEnumKeys($namespace, $methodName, $name);
|
||||
$node['x-enum-keys'] = $enumKeys;
|
||||
}
|
||||
if ($validator->getType() === 'integer') {
|
||||
$node['format'] = $validator->getFormat() ?? 'int32';
|
||||
|
|
|
|||
Loading…
Reference in a new issue