From 8ae462c3172e780fbc43202d1728353fbd061614 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Tue, 17 Dec 2024 10:31:26 +0900 Subject: [PATCH] Fix JSON Encode for multiplex objects --- app/config/specs/open-api3-latest-client.json | 26 ++++++++++++++++++- .../specs/open-api3-latest-console.json | 26 ++++++++++++++++++- app/config/specs/open-api3-latest-server.json | 26 ++++++++++++++++++- app/config/specs/swagger2-latest-client.json | 25 ++++++++++++++++++ app/config/specs/swagger2-latest-console.json | 25 ++++++++++++++++++ app/config/specs/swagger2-latest-server.json | 25 ++++++++++++++++++ src/Appwrite/SDK/Multiplex.php | 14 +++++++++- .../Specification/Format/OpenAPI3.php | 2 +- .../Specification/Format/Swagger2.php | 4 +-- 9 files changed, 166 insertions(+), 7 deletions(-) diff --git a/app/config/specs/open-api3-latest-client.json b/app/config/specs/open-api3-latest-client.json index d4dd2885a2..b707348b2b 100644 --- a/app/config/specs/open-api3-latest-client.json +++ b/app/config/specs/open-api3-latest-client.json @@ -4564,7 +4564,31 @@ "offline-model": "\/databases\/{databaseId}\/collections\/{collectionId}\/documents", "offline-key": "{documentId}", "offline-response-key": "$id", - "multiplex": "[{},{}]", + "multiplex": [ + { + "name": "createDocument", + "parameters": [ + "documentId", + "data", + "permissions" + ], + "required": [ + "documentId", + "data" + ], + "responseModel": "document" + }, + { + "name": "createDocuments", + "parameters": [ + "documents" + ], + "required": [ + "documents" + ], + "responseModel": "documentList" + } + ], "auth": { "Project": [] } diff --git a/app/config/specs/open-api3-latest-console.json b/app/config/specs/open-api3-latest-console.json index a81b5e9c71..a98367ab24 100644 --- a/app/config/specs/open-api3-latest-console.json +++ b/app/config/specs/open-api3-latest-console.json @@ -8133,7 +8133,31 @@ "offline-model": "\/databases\/{databaseId}\/collections\/{collectionId}\/documents", "offline-key": "{documentId}", "offline-response-key": "$id", - "multiplex": "[{},{}]", + "multiplex": [ + { + "name": "createDocument", + "parameters": [ + "documentId", + "data", + "permissions" + ], + "required": [ + "documentId", + "data" + ], + "responseModel": "document" + }, + { + "name": "createDocuments", + "parameters": [ + "documents" + ], + "required": [ + "documents" + ], + "responseModel": "documentList" + } + ], "auth": { "Project": [] } diff --git a/app/config/specs/open-api3-latest-server.json b/app/config/specs/open-api3-latest-server.json index f8672f22c7..c50c1568be 100644 --- a/app/config/specs/open-api3-latest-server.json +++ b/app/config/specs/open-api3-latest-server.json @@ -7667,7 +7667,31 @@ "offline-model": "\/databases\/{databaseId}\/collections\/{collectionId}\/documents", "offline-key": "{documentId}", "offline-response-key": "$id", - "multiplex": "[{},{}]", + "multiplex": [ + { + "name": "createDocument", + "parameters": [ + "documentId", + "data", + "permissions" + ], + "required": [ + "documentId", + "data" + ], + "responseModel": "document" + }, + { + "name": "createDocuments", + "parameters": [ + "documents" + ], + "required": [ + "documents" + ], + "responseModel": "documentList" + } + ], "auth": { "Project": [], "Session": [] diff --git a/app/config/specs/swagger2-latest-client.json b/app/config/specs/swagger2-latest-client.json index 838296291a..15524e447b 100644 --- a/app/config/specs/swagger2-latest-client.json +++ b/app/config/specs/swagger2-latest-client.json @@ -4752,6 +4752,31 @@ "offline-model": "\/databases\/{databaseId}\/collections\/{collectionId}\/documents", "offline-key": "{documentId}", "offline-response-key": "$id", + "multiplex": [ + { + "name": "createDocument", + "parameters": [ + "documentId", + "data", + "permissions" + ], + "required": [ + "documentId", + "data" + ], + "responseModel": "document" + }, + { + "name": "createDocuments", + "parameters": [ + "documents" + ], + "required": [ + "documents" + ], + "responseModel": "documentList" + } + ], "auth": { "Project": [] } diff --git a/app/config/specs/swagger2-latest-console.json b/app/config/specs/swagger2-latest-console.json index 88a1aaab57..6a2c058134 100644 --- a/app/config/specs/swagger2-latest-console.json +++ b/app/config/specs/swagger2-latest-console.json @@ -8336,6 +8336,31 @@ "offline-model": "\/databases\/{databaseId}\/collections\/{collectionId}\/documents", "offline-key": "{documentId}", "offline-response-key": "$id", + "multiplex": [ + { + "name": "createDocument", + "parameters": [ + "documentId", + "data", + "permissions" + ], + "required": [ + "documentId", + "data" + ], + "responseModel": "document" + }, + { + "name": "createDocuments", + "parameters": [ + "documents" + ], + "required": [ + "documents" + ], + "responseModel": "documentList" + } + ], "auth": { "Project": [] } diff --git a/app/config/specs/swagger2-latest-server.json b/app/config/specs/swagger2-latest-server.json index 5edf0a39c1..a02fcb4347 100644 --- a/app/config/specs/swagger2-latest-server.json +++ b/app/config/specs/swagger2-latest-server.json @@ -7848,6 +7848,31 @@ "offline-model": "\/databases\/{databaseId}\/collections\/{collectionId}\/documents", "offline-key": "{documentId}", "offline-response-key": "$id", + "multiplex": [ + { + "name": "createDocument", + "parameters": [ + "documentId", + "data", + "permissions" + ], + "required": [ + "documentId", + "data" + ], + "responseModel": "document" + }, + { + "name": "createDocuments", + "parameters": [ + "documents" + ], + "required": [ + "documents" + ], + "responseModel": "documentList" + } + ], "auth": { "Project": [], "Session": [] diff --git a/src/Appwrite/SDK/Multiplex.php b/src/Appwrite/SDK/Multiplex.php index 28754a53ea..d05c940b75 100644 --- a/src/Appwrite/SDK/Multiplex.php +++ b/src/Appwrite/SDK/Multiplex.php @@ -2,7 +2,9 @@ namespace Appwrite\SDK; -class Multiplex +use JsonSerializable; + +class Multiplex implements JsonSerializable { /** * @param string $name @@ -17,4 +19,14 @@ class Multiplex private string $responseModel ) {} + + public function jsonSerialize(): array + { + return [ + 'name' => $this->name, + 'parameters' => $this->parameters, + 'required' => $this->required, + 'responseModel' => $this->responseModel, + ]; + } } \ No newline at end of file diff --git a/src/Appwrite/Specification/Format/OpenAPI3.php b/src/Appwrite/Specification/Format/OpenAPI3.php index 3cc2ff1698..450594b253 100644 --- a/src/Appwrite/Specification/Format/OpenAPI3.php +++ b/src/Appwrite/Specification/Format/OpenAPI3.php @@ -198,7 +198,7 @@ class OpenAPI3 extends Format ]; if (!empty($sdk->getMultiplex())) { - $temp['x-appwrite']['multiplex'] = \json_encode($sdk->getMultiplex()); + $temp['x-appwrite']['multiplex'] = $sdk->getMultiplex(); } foreach ($this->models as $value) { diff --git a/src/Appwrite/Specification/Format/Swagger2.php b/src/Appwrite/Specification/Format/Swagger2.php index 2595e59f50..5d6bc3a61a 100644 --- a/src/Appwrite/Specification/Format/Swagger2.php +++ b/src/Appwrite/Specification/Format/Swagger2.php @@ -198,8 +198,8 @@ class Swagger2 extends Format $temp['produces'][] = $produces; } - if (is_array($sdk->getMethodName() ?? '')) { - $temp['x-appwrite']['multiplex'] = $sdk->getMethodName(); + if (!empty($sdk->getMultiplex())) { + $temp['x-appwrite']['multiplex'] = $sdk->getMultiplex(); } foreach ($this->models as $value) {