diff --git a/src/SDK/Language/PHP.php b/src/SDK/Language/PHP.php index 527ba6f47..3f6968814 100644 --- a/src/SDK/Language/PHP.php +++ b/src/SDK/Language/PHP.php @@ -384,7 +384,10 @@ public function getFilters(): array return [ new TwigFilter('getReturn', function ($value) { return $this->getReturn($value); - }) + }), + new TwigFilter('deviceInfo', function ($value) { + return php_uname('s') . '; ' . php_uname('v') . '; ' . php_uname('m'); + }), ]; } } diff --git a/templates/dart/lib/src/client_io.dart.twig b/templates/dart/lib/src/client_io.dart.twig index 5b7e291c8..912a6962e 100644 --- a/templates/dart/lib/src/client_io.dart.twig +++ b/templates/dart/lib/src/client_io.dart.twig @@ -43,6 +43,7 @@ class ClientIO extends ClientBase with ClientMixin { 'x-sdk-platform': '{{ sdk.platform }}', 'x-sdk-language': '{{ language.name | caseLower }}', 'x-sdk-version': '{{ sdk.version }}', + 'user-agent' : '{{spec.title | caseUcfirst}}{{ language.name | caseUcfirst }}SDK/{{ sdk.version }} ({{Platform.operatingSystem}}; {{Platform.operatingSystemVersion}})', {% for key,header in spec.global.defaultHeaders %} '{{key}}' : '{{header}}', {% endfor %} diff --git a/templates/deno/src/client.ts.twig b/templates/deno/src/client.ts.twig index fe75b4bb4..e58e49a80 100644 --- a/templates/deno/src/client.ts.twig +++ b/templates/deno/src/client.ts.twig @@ -11,6 +11,7 @@ export class Client { endpoint: string = '{{spec.endpoint}}'; headers: Payload = { 'content-type': '', + 'user-agent' : `{{spec.title | caseUcfirst}}{{ language.name | caseUcfirst }}SDK/{{ sdk.version }} (${Deno.build.os}; ${Deno.build.arch})`, 'x-sdk-name': '{{ sdk.name }}', 'x-sdk-platform': '{{ sdk.platform }}', 'x-sdk-language': '{{ language.name | caseLower }}', diff --git a/templates/dotnet/src/Appwrite/Client.cs.twig b/templates/dotnet/src/Appwrite/Client.cs.twig index 906012d67..9611a6432 100644 --- a/templates/dotnet/src/Appwrite/Client.cs.twig +++ b/templates/dotnet/src/Appwrite/Client.cs.twig @@ -30,6 +30,7 @@ namespace {{ spec.title | caseUcfirst }} this.headers = new Dictionary() { { "content-type", "application/json" }, + { "user-agent" , "{{spec.title | caseUcfirst}}{{ language.name | caseUcfirst }}SDK/{{ sdk.version }} (${Environment.OSVersion.Platform}; ${Environment.OSVersion.VersionString})"}, { "x-sdk-name", "{{ sdk.name }}" }, { "x-sdk-platform", "{{ sdk.platform }}" }, { "x-sdk-language", "{{ language.name | caseLower }}" }, diff --git a/templates/go/client.go.twig b/templates/go/client.go.twig index 9c9d5a9fd..cea33946f 100644 --- a/templates/go/client.go.twig +++ b/templates/go/client.go.twig @@ -18,6 +18,7 @@ import ( "strconv" "strings" "time" + "runtime" ) const ( @@ -65,6 +66,7 @@ func NewClient() Client { headers := map[string]string{ {% for key,header in spec.global.defaultHeaders %} "{{key}}" : "{{header}}", + "user-agent" : fmt.Sprintf("{{spec.title | caseUcfirst}}{{ language.name | caseUcfirst }}SDK/{{ sdk.version }} (%s; %s)", runtime.GOOS, runtime.GOARCH), "x-sdk-name": "{{ sdk.name }}", "x-sdk-platform": "{{ sdk.platform }}", "x-sdk-language": "{{ language.name | caseLower }}", @@ -387,4 +389,4 @@ func toString(arg interface{}) string { default: return fmt.Sprintf("%s", v) } -} \ No newline at end of file +} diff --git a/templates/kotlin/src/main/kotlin/io/appwrite/Client.kt.twig b/templates/kotlin/src/main/kotlin/io/appwrite/Client.kt.twig index 280c7407e..3c12978d5 100644 --- a/templates/kotlin/src/main/kotlin/io/appwrite/Client.kt.twig +++ b/templates/kotlin/src/main/kotlin/io/appwrite/Client.kt.twig @@ -62,11 +62,11 @@ class Client @JvmOverloads constructor( init { headers = mutableMapOf( "content-type" to "application/json", + "user-agent" to "{{spec.title | caseUcfirst}}{{ language.name | caseUcfirst }}SDK/{{ sdk.version }} ${System.getProperty("http.agent")}", "x-sdk-name" to "{{ sdk.name }}", "x-sdk-platform" to "{{ sdk.platform }}", "x-sdk-language" to "{{ language.name | caseLower }}", "x-sdk-version" to "{{ sdk.version }}"{% if spec.global.defaultHeaders | length > 0 %},{% endif %} - {% for key,header in spec.global.defaultHeaders %} "{{ key | caseLower }}" to "{{ header }}"{% if not loop.last %},{% endif %} {% endfor %} diff --git a/templates/node/lib/client.js.twig b/templates/node/lib/client.js.twig index 1be2e1869..b2538e8e8 100644 --- a/templates/node/lib/client.js.twig +++ b/templates/node/lib/client.js.twig @@ -1,3 +1,4 @@ +const os = require('os'); const URL = require('url').URL; const axios = require('axios'); const FormData = require('form-data'); @@ -11,6 +12,7 @@ class Client { this.headers = { 'accept-encoding': '*', 'content-type': '', + 'user-agent' : `{{spec.title | caseUcfirst}}{{language.name | caseUcfirst}}SDK/{{ sdk.version }} (${os.type()}; ${os.version()}; ${os.arch()})`, 'x-sdk-name': '{{ sdk.name }}', 'x-sdk-platform': '{{ sdk.platform }}', 'x-sdk-language': '{{ language.name | caseLower }}', diff --git a/templates/php/src/Client.php.twig b/templates/php/src/Client.php.twig index 040b13aa7..c7443274d 100644 --- a/templates/php/src/Client.php.twig +++ b/templates/php/src/Client.php.twig @@ -37,6 +37,7 @@ class Client */ protected $headers = [ 'content-type' => '', + 'user-agent' => '{{spec.title | caseUcfirst}}{{ language.name | caseUcfirst }}SDK/{{ sdk.version }} ({{deviceInfo}})', 'x-sdk-name'=> '{{ sdk.name }}', 'x-sdk-platform'=> '{{ sdk.platform }}', 'x-sdk-language'=> '{{ language.name | caseLower }}', diff --git a/templates/python/package/client.py.twig b/templates/python/package/client.py.twig index 0d5b2fbb9..71babb46c 100644 --- a/templates/python/package/client.py.twig +++ b/templates/python/package/client.py.twig @@ -11,6 +11,7 @@ class Client: self._endpoint = '{{spec.endpoint}}' self._global_headers = { 'content-type': '', + 'user-agent' : '{{spec.title | caseUcfirst}}{{ language.name | caseUcfirst }}SDK/{{ sdk.version }} (${os.uname().sysname}; ${os.uname().version}; ${os.uname().machine})', 'x-sdk-name': '{{ sdk.name }}', 'x-sdk-platform': '{{ sdk.platform }}', 'x-sdk-language': '{{ language.name | caseLower }}',