From 73c7a6f7fc52ab2c6935aac91b006ded4a1ced81 Mon Sep 17 00:00:00 2001 From: ChiragAgg5k Date: Thu, 24 Apr 2025 18:26:12 +0530 Subject: [PATCH 1/3] feat: endpoint for docs / examples --- example.php | 2 +- src/SDK/SDK.php | 1 + src/Spec/Spec.php | 5 +++++ src/Spec/Swagger2.php | 10 ++++++++++ templates/android/docs/java/example.md.twig | 2 +- templates/android/docs/kotlin/example.md.twig | 2 +- .../main/java/io/package/android/utils/Client.kt.twig | 2 +- templates/dart/docs/example.md.twig | 2 +- templates/deno/docs/example.md.twig | 2 +- templates/flutter/docs/example.md.twig | 2 +- templates/kotlin/docs/java/example.md.twig | 2 +- templates/kotlin/docs/kotlin/example.md.twig | 2 +- templates/node/docs/example.md.twig | 2 +- templates/php/docs/example.md.twig | 2 +- templates/react-native/docs/example.md.twig | 2 +- templates/swift/docs/example.md.twig | 2 +- templates/web/docs/example.md.twig | 2 +- 17 files changed, 30 insertions(+), 14 deletions(-) diff --git a/example.php b/example.php index 27014c19d..1d128cac1 100644 --- a/example.php +++ b/example.php @@ -42,7 +42,7 @@ function getSSLPage($url) { $platform = 'console'; // $platform = 'server'; - $spec = getSSLPage("https://raw.githubusercontent.com/appwrite/appwrite/1.7.x/app/config/specs/swagger2-latest-{$platform}.json"); + $spec = getSSLPage("https://raw.githubusercontent.com/appwrite/appwrite/chore-docs-endpoint/app/config/specs/swagger2-latest-{$platform}.json"); if(empty($spec)) { throw new Exception('Failed to fetch spec from Appwrite server'); diff --git a/src/SDK/SDK.php b/src/SDK/SDK.php index e88994b95..2033d6559 100644 --- a/src/SDK/SDK.php +++ b/src/SDK/SDK.php @@ -544,6 +544,7 @@ public function generate(string $target): void 'namespace' => $this->spec->getNamespace(), 'version' => $this->spec->getVersion(), 'endpoint' => $this->spec->getEndpoint(), + 'endpointDocs' => $this->spec->getEndpointDocs(), 'host' => parse_url($this->spec->getEndpoint(), PHP_URL_HOST), 'basePath' => $this->spec->getAttribute('basePath', ''), 'licenseName' => $this->spec->getLicenseName(), diff --git a/src/Spec/Spec.php b/src/Spec/Spec.php index cc6754731..5e47e8d49 100644 --- a/src/Spec/Spec.php +++ b/src/Spec/Spec.php @@ -64,6 +64,11 @@ abstract public function getVersion(); */ abstract public function getEndpoint(); + /** + * @return string + */ + abstract public function getEndpointDocs(); + /** * @return string */ diff --git a/src/Spec/Swagger2.php b/src/Spec/Swagger2.php index be5f207e6..4db6a014e 100644 --- a/src/Spec/Swagger2.php +++ b/src/Spec/Swagger2.php @@ -48,6 +48,16 @@ public function getEndpoint() $this->getAttribute('basePath', ''); } + /** + * @return string + */ + public function getEndpointDocs() + { + return $this->getAttribute('schemes.0', 'https') . + '://' . $this->getAttribute('x-host-docs', 'example.com') . + $this->getAttribute('basePath', ''); + } + /** * @return string */ diff --git a/templates/android/docs/java/example.md.twig b/templates/android/docs/java/example.md.twig index f5f896685..34a28a632 100644 --- a/templates/android/docs/java/example.md.twig +++ b/templates/android/docs/java/example.md.twig @@ -23,7 +23,7 @@ import {{ sdk.namespace | caseDot }}.enums.{{ name | caseUcfirst }}; Client client = new Client(context) {%~ if method.auth|length > 0 %} - .setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint + .setEndpoint("{{ spec.endpointDocs | raw }}") // Your API Endpoint {%~ for node in method.auth %} {%~ for key,header in node|keys %} .set{{header | caseUcfirst}}("{{node[header]['x-appwrite']['demo'] | raw }}"){% if loop.last %};{% endif %} // {{ node[header].description }} diff --git a/templates/android/docs/kotlin/example.md.twig b/templates/android/docs/kotlin/example.md.twig index c15f3ee0b..e481ba290 100644 --- a/templates/android/docs/kotlin/example.md.twig +++ b/templates/android/docs/kotlin/example.md.twig @@ -23,7 +23,7 @@ import {{ sdk.namespace | caseDot }}.enums.{{ name | caseUcfirst }} val client = Client(context) {%~ if method.auth|length > 0 %} - .setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint + .setEndpoint("{{ spec.endpointDocs | raw }}") // Your API Endpoint {%~ for node in method.auth %} {%~ for key,header in node|keys %} .set{{header | caseUcfirst}}("{{node[header]['x-appwrite']['demo'] | raw }}") // {{node[header].description}} diff --git a/templates/android/example/src/main/java/io/package/android/utils/Client.kt.twig b/templates/android/example/src/main/java/io/package/android/utils/Client.kt.twig index f66e24507..a00a966fd 100644 --- a/templates/android/example/src/main/java/io/package/android/utils/Client.kt.twig +++ b/templates/android/example/src/main/java/io/package/android/utils/Client.kt.twig @@ -8,7 +8,7 @@ object Client { fun create(context: Context) { client = Client(context) - .setEndpoint("http://192.168.4.24/v1") + .setEndpoint("{{ spec.endpointDocs | raw }}") .setProject("65a8e2b4632c04b1f5da") .setSelfSigned(true) } diff --git a/templates/dart/docs/example.md.twig b/templates/dart/docs/example.md.twig index 882bade10..8cab9fbda 100644 --- a/templates/dart/docs/example.md.twig +++ b/templates/dart/docs/example.md.twig @@ -5,7 +5,7 @@ import 'package:{{ language.params.packageName }}/{{ language.params.packageName Client client = Client() {%~ if method.auth|length > 0 %} - .setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint + .setEndpoint('{{ spec.endpointDocs | raw }}') // Your API Endpoint {%~ for node in method.auth %} {%~ for key,header in node|keys %} .set{{header}}('{{node[header]['x-appwrite']['demo'] | raw }}'){% if loop.last %};{% endif%} // {{node[header].description}} diff --git a/templates/deno/docs/example.md.twig b/templates/deno/docs/example.md.twig index cec62c160..349c8389f 100644 --- a/templates/deno/docs/example.md.twig +++ b/templates/deno/docs/example.md.twig @@ -2,7 +2,7 @@ import { Client, {{ service.name | caseUcfirst }}{% for parameter in method.para const client = new Client() {%~ if method.auth|length > 0 %} - .setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint + .setEndpoint('{{ spec.endpointDocs | raw }}') // Your API Endpoint {%~ for node in method.auth %} {%~ for key,header in node|keys %} .set{{header}}('{{node[header]['x-appwrite']['demo'] | raw }}'){% if loop.last %};{% endif%} // {{node[header].description}} diff --git a/templates/flutter/docs/example.md.twig b/templates/flutter/docs/example.md.twig index 01958f280..3447fa906 100644 --- a/templates/flutter/docs/example.md.twig +++ b/templates/flutter/docs/example.md.twig @@ -5,7 +5,7 @@ import 'package:{{ language.params.packageName }}/{{ language.params.packageName Client client = Client() {%~ if method.auth|length > 0 %} - .setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint + .setEndpoint('{{ spec.endpointDocs | raw }}') // Your API Endpoint {%~ for node in method.auth %} {%~ for key,header in node|keys %} .set{{header}}('{{node[header]['x-appwrite']['demo'] | raw }}'){% if loop.last %};{% endif%} // {{node[header].description}} diff --git a/templates/kotlin/docs/java/example.md.twig b/templates/kotlin/docs/java/example.md.twig index 7dea014ae..5c3c04d75 100644 --- a/templates/kotlin/docs/java/example.md.twig +++ b/templates/kotlin/docs/java/example.md.twig @@ -23,7 +23,7 @@ import {{ sdk.namespace | caseDot }}.enums.{{ name | caseUcfirst }}; Client client = new Client() {% if method.auth|length > 0 %} - .setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint + .setEndpoint("{{ spec.endpointDocs | raw }}") // Your API Endpoint {% for node in method.auth %} {% for key,header in node|keys %} .set{{header | caseUcfirst}}("{{node[header]['x-appwrite']['demo'] | raw }}"){% if loop.last %};{% endif %} // {{node[header].description}} diff --git a/templates/kotlin/docs/kotlin/example.md.twig b/templates/kotlin/docs/kotlin/example.md.twig index 378594c8c..c7472c62c 100644 --- a/templates/kotlin/docs/kotlin/example.md.twig +++ b/templates/kotlin/docs/kotlin/example.md.twig @@ -23,7 +23,7 @@ import {{ sdk.namespace | caseDot }}.enums.{{ name | caseUcfirst }} val client = Client() {% if method.auth|length > 0 %} - .setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint + .setEndpoint("{{ spec.endpointDocs | raw }}") // Your API Endpoint {% for node in method.auth %} {% for key,header in node|keys %} .set{{header | caseUcfirst}}("{{node[header]['x-appwrite']['demo'] | raw }}") // {{node[header].description}} diff --git a/templates/node/docs/example.md.twig b/templates/node/docs/example.md.twig index 7ecf85a7e..873e52a98 100644 --- a/templates/node/docs/example.md.twig +++ b/templates/node/docs/example.md.twig @@ -5,7 +5,7 @@ const fs = require('fs'); const client = new sdk.Client() {%~ if method.auth|length > 0 %} - .setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint + .setEndpoint('{{ spec.endpointDocs | raw }}') // Your API Endpoint {%~ for node in method.auth %} {%~ for key,header in node|keys %} .set{{header}}('{{node[header]['x-appwrite']['demo'] | raw }}'){% if loop.last %};{% endif%} // {{node[header].description}} diff --git a/templates/php/docs/example.md.twig b/templates/php/docs/example.md.twig index 9a272432b..028e08ae4 100644 --- a/templates/php/docs/example.md.twig +++ b/templates/php/docs/example.md.twig @@ -24,7 +24,7 @@ use {{ spec.title | caseUcfirst }}\Enums\{{parameter.enumName | caseUcfirst}}; $client = (new Client()) {%~ if method.auth|length > 0 %} - ->setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint + ->setEndpoint('{{ spec.endpointDocs | raw }}') // Your API Endpoint {%~ for node in method.auth %} {%~ for key,header in node|keys %} ->set{{header}}('{{node[header]['x-appwrite']['demo'] | raw }}'){% if loop.last%};{% endif%} // {{node[header].description}} diff --git a/templates/react-native/docs/example.md.twig b/templates/react-native/docs/example.md.twig index 37a3b0699..14e83e18d 100644 --- a/templates/react-native/docs/example.md.twig +++ b/templates/react-native/docs/example.md.twig @@ -2,7 +2,7 @@ import { Client, {{ service.name | caseUcfirst }}{% for parameter in method.para const client = new Client() {%~ if method.auth|length > 0 %} - .setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint + .setEndpoint('{{ spec.endpointDocs | raw }}') // Your API Endpoint {%~ for node in method.auth %} {%~ for key,header in node|keys %} .set{{header}}('{{node[header]['x-appwrite']['demo'] | raw }}'){% if loop.last %};{% endif%} // {{node[header].description}} diff --git a/templates/swift/docs/example.md.twig b/templates/swift/docs/example.md.twig index 31460e7fa..8eadbfaa1 100644 --- a/templates/swift/docs/example.md.twig +++ b/templates/swift/docs/example.md.twig @@ -9,7 +9,7 @@ import {{ spec.title | caseUcfirst }}Enums let client = Client() {% if method.auth|length > 0 %} - .setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint + .setEndpoint("{{ spec.endpointDocs | raw }}") // Your API Endpoint {% for node in method.auth %} {% for key,header in node|keys %} .set{{header | caseUcfirst}}("{{node[header]['x-appwrite']['demo'] | raw }}") // {{node[header].description}} diff --git a/templates/web/docs/example.md.twig b/templates/web/docs/example.md.twig index 37a3b0699..14e83e18d 100644 --- a/templates/web/docs/example.md.twig +++ b/templates/web/docs/example.md.twig @@ -2,7 +2,7 @@ import { Client, {{ service.name | caseUcfirst }}{% for parameter in method.para const client = new Client() {%~ if method.auth|length > 0 %} - .setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint + .setEndpoint('{{ spec.endpointDocs | raw }}') // Your API Endpoint {%~ for node in method.auth %} {%~ for key,header in node|keys %} .set{{header}}('{{node[header]['x-appwrite']['demo'] | raw }}'){% if loop.last %};{% endif%} // {{node[header].description}} From 8e1763586ee3703631372e90f052e44863b63e67 Mon Sep 17 00:00:00 2001 From: ChiragAgg5k Date: Thu, 24 Apr 2025 19:45:26 +0530 Subject: [PATCH 2/3] chore: use 1.6.x --- example.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example.php b/example.php index 1d128cac1..f9845b9a9 100644 --- a/example.php +++ b/example.php @@ -42,7 +42,7 @@ function getSSLPage($url) { $platform = 'console'; // $platform = 'server'; - $spec = getSSLPage("https://raw.githubusercontent.com/appwrite/appwrite/chore-docs-endpoint/app/config/specs/swagger2-latest-{$platform}.json"); + $spec = getSSLPage("https://raw.githubusercontent.com/appwrite/appwrite/1.6.x/app/config/specs/swagger2-latest-{$platform}.json"); if(empty($spec)) { throw new Exception('Failed to fetch spec from Appwrite server'); From 412ea68ac0299522f08bfcaef410fd86bef8774f Mon Sep 17 00:00:00 2001 From: ChiragAgg5k Date: Thu, 24 Apr 2025 19:48:21 +0530 Subject: [PATCH 3/3] fix: missing examples --- templates/dotnet/docs/example.md.twig | 2 +- templates/go/docs/example.md.twig | 2 +- templates/python/docs/example.md.twig | 2 +- templates/ruby/docs/example.md.twig | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/templates/dotnet/docs/example.md.twig b/templates/dotnet/docs/example.md.twig index 6fc0753e2..c8aab98b5 100644 --- a/templates/dotnet/docs/example.md.twig +++ b/templates/dotnet/docs/example.md.twig @@ -11,7 +11,7 @@ using {{ spec.title | caseUcfirst }}.Services; Client client = new Client() {% if method.auth|length > 0 %} - .SetEndPoint("https://cloud.appwrite.io/v1") // Your API Endpoint + .SetEndPoint("{{ spec.endpointDocs | raw }}") // Your API Endpoint {% for node in method.auth %} {% for key,header in node|keys %} .Set{{header | caseUcfirst}}("{{node[header]['x-appwrite']['demo'] | raw }}"){% if loop.last %};{% endif %} // {{node[header].description}} diff --git a/templates/go/docs/example.md.twig b/templates/go/docs/example.md.twig index cbd611f73..71632747a 100644 --- a/templates/go/docs/example.md.twig +++ b/templates/go/docs/example.md.twig @@ -19,7 +19,7 @@ func main() { client := client.NewClient() {% if method.auth|length > 0 %} - client.SetEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint + client.SetEndpoint("{{ spec.endpointDocs | raw }}") // Your API Endpoint {% for node in method.auth %} {% for key,header in node|keys %} client.Set{{header}}("{{node[header]['x-appwrite']['demo'] | raw }}") // {{node[header].description}} diff --git a/templates/python/docs/example.md.twig b/templates/python/docs/example.md.twig index 54e93ed08..e61cc6d12 100644 --- a/templates/python/docs/example.md.twig +++ b/templates/python/docs/example.md.twig @@ -22,7 +22,7 @@ from {{ spec.title | caseSnake }}.enums import {{parameter.enumName | caseUcfirs client = Client() {% if method.auth|length > 0 %} -client.set_endpoint('https://cloud.appwrite.io/v1') # Your API Endpoint +client.set_endpoint('{{ spec.endpointDocs | raw }}') # Your API Endpoint {% for node in method.auth %} {% for key,header in node|keys %} client.set_{{header | caseSnake}}('{{node[header]['x-appwrite']['demo'] | raw }}') # {{node[header].description}} diff --git a/templates/ruby/docs/example.md.twig b/templates/ruby/docs/example.md.twig index 747e4081c..b353a9b5e 100644 --- a/templates/ruby/docs/example.md.twig +++ b/templates/ruby/docs/example.md.twig @@ -14,7 +14,7 @@ include {{ spec.title | caseUcfirst }}::Enums {% endfor %} client = Client.new - .set_endpoint('https://cloud.appwrite.io/v1') # Your API Endpoint + .set_endpoint('{{ spec.endpointDocs | raw }}') # Your API Endpoint {%~ for node in method.auth %} {%~ for key,header in node|keys %} .set_{{header|caseSnake}}('{{node[header]['x-appwrite']['demo'] | raw }}') # {{node[header].description}}