Skip to content

Commit 997d64e

Browse files
committed
Merge branch 'master' into feat-8-add-go-templates
2 parents b0fddb8 + 551cdae commit 997d64e

File tree

73 files changed

+2533
-1088
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+2533
-1088
lines changed

.travis.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ env:
2929
- SDK=DartStable
3030
- SDK=Deno1193
3131
- SDK=Deno1303
32+
- SDK=DotNet60
33+
- SDK=DotNet70
3234
- SDK=FlutterStable
3335
- SDK=FlutterBeta
3436
- SDK=Go112

src/SDK/Language/DotNet.php

Lines changed: 65 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -139,23 +139,26 @@ public function getKeywords(): array
139139
public function getIdentifierOverrides(): array
140140
{
141141
return [
142-
'Jwt' => 'JWT'
142+
'Jwt' => 'JWT',
143+
'Domain' => 'XDomain',
143144
];
144145
}
145146

146147
/**
147-
* @param $type
148+
* @param array $parameter
148149
* @return string
149150
*/
150151
public function getTypeName(array $parameter): string
151152
{
152153
switch ($parameter['type']) {
153154
case self::TYPE_INTEGER:
154-
return 'int';
155+
return 'long';
156+
case self::TYPE_NUMBER:
157+
return 'double';
155158
case self::TYPE_STRING:
156159
return 'string';
157160
case self::TYPE_FILE:
158-
return 'FileInfo';
161+
return 'InputFile';
159162
case self::TYPE_BOOLEAN:
160163
return 'bool';
161164
case self::TYPE_ARRAY:
@@ -249,7 +252,13 @@ public function getParamExample(array $param): string
249252
$output .= '[object]';
250253
break;
251254
case self::TYPE_ARRAY:
252-
$output .= '[List<object>]';
255+
if (\str_starts_with($example, '[')) {
256+
$example = \substr($example, 1);
257+
}
258+
if (\str_ends_with($example, ']')) {
259+
$example = \substr($example, 0, -1);
260+
}
261+
$output .= 'new List<' . $this->getTypeName($param['array']) . '> {' . $example . '}';
253262
break;
254263
}
255264
} else {
@@ -283,23 +292,28 @@ public function getFiles(): array
283292
return [
284293
[
285294
'scope' => 'default',
286-
'destination' => 'README.md',
287-
'template' => 'dotnet/README.md.twig',
295+
'destination' => '.travis.yml',
296+
'template' => 'dotnet/.travis.yml.twig',
288297
],
289298
[
290299
'scope' => 'default',
291300
'destination' => 'CHANGELOG.md',
292301
'template' => 'dotnet/CHANGELOG.md.twig',
293302
],
303+
[
304+
'scope' => 'copy',
305+
'destination' => '/icon.png',
306+
'template' => 'dotnet/icon.png',
307+
],
294308
[
295309
'scope' => 'default',
296310
'destination' => 'LICENSE',
297311
'template' => 'dotnet/LICENSE.twig',
298312
],
299313
[
300314
'scope' => 'default',
301-
'destination' => '.travis.yml',
302-
'template' => 'dotnet/.travis.yml.twig',
315+
'destination' => 'README.md',
316+
'template' => 'dotnet/README.md.twig',
303317
],
304318
[
305319
'scope' => 'method',
@@ -308,53 +322,78 @@ public function getFiles(): array
308322
],
309323
[
310324
'scope' => 'default',
311-
'destination' => '/src/Appwrite.sln',
325+
'destination' => '/src/{{ spec.title | caseUcfirst }}.sln',
312326
'template' => 'dotnet/src/Appwrite.sln',
313327
],
314-
[
315-
'scope' => 'copy',
316-
'destination' => '/icon.png',
317-
'template' => 'dotnet/icon.png',
318-
],
319328
[
320329
'scope' => 'default',
321-
'destination' => '/src/Appwrite/Appwrite.csproj',
330+
'destination' => '/src/{{ spec.title | caseUcfirst }}/{{ spec.title | caseUcfirst }}.csproj',
322331
'template' => 'dotnet/src/Appwrite/Appwrite.csproj.twig',
323332
],
324333
[
325334
'scope' => 'default',
326-
'destination' => '/{{ sdk.namespace | caseSlash }}/src/Appwrite/Client.cs',
335+
'destination' => '/src/{{ spec.title | caseUcfirst }}/Client.cs',
327336
'template' => 'dotnet/src/Appwrite/Client.cs.twig',
328337
],
329338
[
330339
'scope' => 'default',
331-
'destination' => '/{{ sdk.namespace | caseSlash }}/src/Appwrite/Helpers/ExtensionMethods.cs',
332-
'template' => 'dotnet/src/Appwrite/Helpers/ExtensionMethods.cs',
340+
'destination' => '/src/{{ spec.title | caseUcfirst }}/{{ spec.title | caseUcfirst }}Exception.cs',
341+
'template' => 'dotnet/src/Appwrite/Exception.cs.twig',
333342
],
334343
[
335344
'scope' => 'default',
336-
'destination' => '/{{ sdk.namespace | caseSlash }}/src/Appwrite/Models/OrderType.cs',
345+
'destination' => '/src/{{ spec.title | caseUcfirst }}/ID.cs',
346+
'template' => 'dotnet/src/Appwrite/ID.cs.twig',
347+
],
348+
[
349+
'scope' => 'default',
350+
'destination' => '/src/{{ spec.title | caseUcfirst }}/Permission.cs',
351+
'template' => 'dotnet/src/Appwrite/Permission.cs.twig',
352+
],
353+
[
354+
'scope' => 'default',
355+
'destination' => '/src/{{ spec.title | caseUcfirst }}/Query.cs',
356+
'template' => 'dotnet/src/Appwrite/Query.cs.twig',
357+
],
358+
[
359+
'scope' => 'default',
360+
'destination' => '/src/{{ spec.title | caseUcfirst }}/Role.cs',
361+
'template' => 'dotnet/src/Appwrite/Role.cs.twig',
362+
],
363+
[
364+
'scope' => 'default',
365+
'destination' => '/src/{{ spec.title | caseUcfirst }}/Extensions/Extensions.cs',
366+
'template' => 'dotnet/src/Appwrite/Extensions/Extensions.cs.twig',
367+
],
368+
[
369+
'scope' => 'default',
370+
'destination' => '/src/{{ spec.title | caseUcfirst }}/Models/OrderType.cs',
337371
'template' => 'dotnet/src/Appwrite/Models/OrderType.cs.twig',
338372
],
339373
[
340374
'scope' => 'default',
341-
'destination' => '/{{ sdk.namespace | caseSlash }}/src/Appwrite/Models/Rule.cs',
342-
'template' => 'dotnet/src/Appwrite/Models/Rule.cs.twig',
375+
'destination' => '/src/{{ spec.title | caseUcfirst }}/Models/UploadProgress.cs',
376+
'template' => 'dotnet/src/Appwrite/Models/UploadProgress.cs.twig',
343377
],
344378
[
345379
'scope' => 'default',
346-
'destination' => '/{{ sdk.namespace | caseSlash }}/src/Appwrite/Models/Exception.cs',
347-
'template' => 'dotnet/src/Appwrite/Models/Exception.cs.twig',
380+
'destination' => '/src/{{ spec.title | caseUcfirst }}/Models/InputFile.cs',
381+
'template' => 'dotnet/src/Appwrite/Models/InputFile.cs.twig',
348382
],
349383
[
350384
'scope' => 'default',
351-
'destination' => '/{{ sdk.namespace | caseSlash }}/src/Appwrite/Services/Service.cs',
385+
'destination' => '/src/{{ spec.title | caseUcfirst }}/Services/Service.cs',
352386
'template' => 'dotnet/src/Appwrite/Services/Service.cs.twig',
353387
],
354388
[
355389
'scope' => 'service',
356-
'destination' => '/{{ sdk.namespace | caseSlash }}/src/Appwrite/Services/{{service.name | caseUcfirst}}.cs',
390+
'destination' => '/src/{{ spec.title | caseUcfirst }}/Services/{{service.name | caseUcfirst}}.cs',
357391
'template' => 'dotnet/src/Appwrite/Services/ServiceTemplate.cs.twig',
392+
],
393+
[
394+
'scope' => 'definition',
395+
'destination' => '/src/{{ spec.title | caseUcfirst }}/Models/{{ definition.name | caseUcfirst | overrideIdentifier }}.cs',
396+
'template' => 'dotnet/src/Appwrite/Models/Model.cs.twig',
358397
]
359398
];
360399
}

src/SDK/Language/PHP.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,10 @@ public function getFilters(): array
384384
return [
385385
new TwigFilter('getReturn', function ($value) {
386386
return $this->getReturn($value);
387-
})
387+
}),
388+
new TwigFilter('deviceInfo', function ($value) {
389+
return php_uname('s') . '; ' . php_uname('v') . '; ' . php_uname('m');
390+
}),
388391
];
389392
}
390393
}

src/Spec/Swagger2.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ public function getMethods($service)
207207
'class' => $parameter['x-class'] ?? null,
208208
'description' => $parameter['description'] ?? '',
209209
'required' => $parameter['required'] ?? false,
210+
'nullable' => $parameter['x-nullable'] ?? false,
210211
'default' => $parameter['default'] ?? null,
211212
'example' => $parameter['x-example'] ?? null,
212213
'isUploadID' => $parameter['x-upload-id'] ?? false,
@@ -245,6 +246,7 @@ public function getMethods($service)
245246
$param['required'] = (in_array($key, $bodyRequired));
246247
$param['example'] = $value['x-example'] ?? null;
247248
$param['isUploadID'] = $value['x-upload-id'] ?? false;
249+
$param['nullable'] = $value['x-nullable'] ?? false;
248250
$param['array'] = [
249251
'type' => $value['items']['type'] ?? '',
250252
];

templates/android/docs/java/example.md.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {{ sdk.namespace | caseDot }}.services.{{ service.name | caseUcfirst }};
77

88
Client client = new Client(context)
99
{% if method.auth|length > 0 %}
10-
.setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
10+
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
1111
{% for node in method.auth %}
1212
{% for key,header in node|keys %}
1313
.set{{header | caseUcfirst}}("{{node[header]['x-appwrite']['demo']}}"){% if loop.last %};{% endif %} // {{node[header].description}}

templates/android/docs/kotlin/example.md.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {{ sdk.namespace | caseDot }}.services.{{ service.name | caseUcfirst }}
66

77
val client = Client(context)
88
{% if method.auth|length > 0 %}
9-
.setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
9+
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
1010
{% for node in method.auth %}
1111
{% for key,header in node|keys %}
1212
.set{{header | caseUcfirst}}("{{node[header]['x-appwrite']['demo']}}") // {{node[header].description}}

templates/android/library/src/main/java/io/appwrite/services/ServiceTemplate.kt.twig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class {{ service.name | caseUcfirst }} : Service {
4444
activity: ComponentActivity,
4545
{%~ endif %}
4646
{%~ for parameter in method.parameters.all %}
47-
{{ parameter.name | caseCamel }}: {{ parameter | typeName }}{%~ if not parameter.required %}? = null{% endif %},
47+
{{ parameter.name | caseCamel }}: {{ parameter | typeName }}{%~ if not parameter.required or parameter.nullable %}? = null{% endif %},
4848
{%~ endfor %}
4949
{%~ if method.responseModel | hasGenericType(spec) %}
5050
nestedType: Class<T>,
@@ -198,7 +198,7 @@ class {{ service.name | caseUcfirst }} : Service {
198198
activity: ComponentActivity,
199199
{%~ endif %}
200200
{%~ for parameter in method.parameters.all %}
201-
{{ parameter.name | caseCamel }}: {{ parameter | typeName }}{%~ if not parameter.required %}? = null{% endif %},
201+
{{ parameter.name | caseCamel }}: {{ parameter | typeName }}{%~ if not parameter.required or parameter.nullable %}? = null{% endif %},
202202
{%~ endfor %}
203203
{%~ if 'multipart/form-data' in method.consumes %}
204204
onProgress: ((UploadProgress) -> Unit)? = null

templates/cli/lib/client.js.twig

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
const os = require('os');
2+
const https = require("https");
23
const axios = require("axios");
34
const JSONbig = require("json-bigint")({ storeAsString: false });
45
const FormData = require("form-data");
@@ -100,11 +101,6 @@ class Client {
100101
params = {},
101102
responseType = "json"
102103
) {
103-
if (this.selfSigned == true) {
104-
// Allow self signed requests
105-
process.env["NODE_TLS_REJECT_UNAUTHORIZED"] = 0;
106-
}
107-
108104
headers = Object.assign({}, this.headers, headers);
109105

110106
let contentType = headers["content-type"].toLowerCase();
@@ -140,6 +136,10 @@ class Client {
140136
transformResponse: [ (data) => data ? JSONbig.parse(data) : data ],
141137
responseType: responseType,
142138
};
139+
if (this.selfSigned == true) {
140+
// Allow self signed requests
141+
options.httpsAgent = new https.Agent({ rejectUnauthorized: false });
142+
}
143143
try {
144144
let response = await axios(options);
145145
if (response.headers["set-cookie"]) {

templates/cli/lib/commands/command.js.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ const {{ service.name | caseLower }}{{ method.name | caseUcfirst }} = async ({ {
228228
{% autoescape false %}
229229
.description(`{{ method.description | replace({'`':'\''}) | replace({'\n':' '}) | replace({'\n \n':' '}) }}`)
230230
{% for parameter in method.parameters.all %}
231-
.{% if parameter.required %}requiredOption{% else %}option{% endif %}(`--{{ parameter.name | escapeKeyword }} {% if parameter.array.type|length > 0 %}[{% else %}<{% endif %}{{ parameter.name | escapeKeyword }}{% if parameter.array.type|length > 0 %}...{% endif %}{% if parameter.array.type|length > 0 %}]{% else %}>{% endif %}`, `{{ parameter.description | replace({'`':'\''}) | replace({'\n':' '}) | replace({'\n \n':' '}) }}`{% if parameter | typeName == 'boolean' %}, parseBool{% elseif parameter | typeName == 'number' %}, parseInteger{% endif %})
231+
.{% if parameter.required and not parameter.nullable %}requiredOption{% else %}option{% endif %}(`--{{ parameter.name | escapeKeyword }} {% if parameter.array.type|length > 0 %}[{% else %}<{% endif %}{{ parameter.name | escapeKeyword }}{% if parameter.array.type|length > 0 %}...{% endif %}{% if parameter.array.type|length > 0 %}]{% else %}>{% endif %}`, `{{ parameter.description | replace({'`':'\''}) | replace({'\n':' '}) | replace({'\n \n':' '}) }}`{% if parameter | typeName == 'boolean' %}, parseBool{% elseif parameter | typeName == 'number' %}, parseInteger{% endif %})
232232
{% endfor %}
233233
{% if method.type == 'location' %}
234234
.requiredOption(`--destination <path>`, `output file path.`)

0 commit comments

Comments
 (0)