Skip to content

Commit f545f2e

Browse files
committed
Merge branch 'master' into feat-refactor-sdk-tests
2 parents 54dd8b7 + 0d4cb96 commit f545f2e

File tree

19 files changed

+158
-58
lines changed

19 files changed

+158
-58
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
examples/*
1111

1212
# exception to the rule
13-
!examples/.gitkeep
13+
!examples/.gitkeep
1414
**/.DS_Store
1515
templates/swift/example/.build
1616
templates/swift/example/Example.xcodeproj/project.xcworkspace/xcuserdata

src/SDK/Language/Dart.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,12 +363,24 @@ public function getFiles()
363363
'template' => 'dart/lib/src/enums.dart.twig',
364364
'minify' => false,
365365
],
366+
[
367+
'scope' => 'default',
368+
'destination' => '/lib/models.dart',
369+
'template' => 'dart/lib/models.dart.twig',
370+
'minify' => false,
371+
],
366372
[
367373
'scope' => 'service',
368374
'destination' => '/lib/services/{{service.name | caseDash}}.dart',
369375
'template' => 'dart/lib/services/service.dart.twig',
370376
'minify' => false,
371377
],
378+
[
379+
'scope' => 'definition',
380+
'destination' => '/lib/src/models/{{definition.name | caseSnake }}.dart',
381+
'template' => 'dart/lib/src/models/model.dart.twig',
382+
'minify' => false,
383+
],
372384
[
373385
'scope' => 'method',
374386
'destination' => 'docs/examples/{{service.name | caseLower}}/{{method.name | caseDash}}.md',

src/SDK/Language/Flutter.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,12 @@ public function getFiles()
223223
'template' => 'flutter/lib/src/service.dart.twig',
224224
'minify' => false,
225225
],
226+
[
227+
'scope' => 'default',
228+
'destination' => '/lib/src/models/model.dart',
229+
'template' => 'flutter/lib/src/models/model_base.dart.twig',
230+
'minify' => false,
231+
],
226232
[
227233
'scope' => 'default',
228234
'destination' => '/lib/src/enums.dart',

src/SDK/Language/Kotlin.php

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -352,12 +352,6 @@ public function getFiles()
352352
'template' => '/kotlin/src/main/kotlin/io/appwrite/extensions/JsonExtensions.kt.twig',
353353
'minify' => false,
354354
],
355-
[
356-
'scope' => 'default',
357-
'destination' => '/src/main/kotlin/{{ sdk.namespace | caseSlash }}/models/Error.kt',
358-
'template' => '/kotlin/src/main/kotlin/io/appwrite/models/Error.kt.twig',
359-
'minify' => false,
360-
],
361355
[
362356
'scope' => 'default',
363357
'destination' => '/src/main/kotlin/{{ sdk.namespace | caseSlash }}/services/BaseService.kt',

src/SDK/SDK.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,14 @@ public function __construct(Language $language, Spec $spec)
197197

198198
return $value;
199199
}, ['is_safe' => ['html']]));
200+
$this->twig->addFilter(new TwigFilter('ucFirstAndEscape', function ($value) use ($language) {
201+
$value = ucfirst((string)$this->helperCamelCase($value));
202+
if(in_array($value, $language->getKeywords())) {
203+
$value = 'x' . $value;
204+
}
205+
206+
return ucfirst((string)$this->helperCamelCase($value));
207+
}, ['is_safe' => ['html']]));
200208
$this->twig->addFilter(new TwigFilter('caseHTML', function ($value) {
201209
return $value;
202210
}, ['is_safe' => ['html']]));

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

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -314,16 +314,11 @@ class Client @JvmOverloads constructor(
314314

315315
val contentType: String = response.headers["content-type"] ?: ""
316316
val error = if (contentType.contains("application/json", ignoreCase = true)) {
317-
bodyString.fromJson<{{ spec.title | caseUcfirst }}Exception>()
317+
bodyString.fromJson()
318318
} else {
319319
{{ spec.title | caseUcfirst }}Exception(bodyString, response.code)
320320
}
321-
322-
it.cancel(AppwriteException(
323-
error.message,
324-
error.code,
325-
bodyString
326-
))
321+
it.cancel(error)
327322
}
328323
it.resume(response)
329324
}

templates/android/library/src/main/java/io/appwrite/exceptions/Exception.kt.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package {{ sdk.namespace | caseDot }}.exceptions
33
import java.lang.Exception
44

55
class {{spec.title | caseUcfirst}}Exception(
6-
message: String? = null,
6+
override val message: String? = null,
77
val code: Int? = null,
88
val response: String? = null
99
) : Exception(message)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
library {{ language.params.packageName }}.models;
2+
3+
{% for definition in spec.definitions %}
4+
part 'src/models/{{definition.name | caseSnake}}.dart';
5+
{% endfor %}

templates/dart/lib/package.dart.twig

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
library {{ language.params.packageName }};
22

33
import 'dart:async';
4+
import 'dart:typed_data';
45
import 'package:http/http.dart' as http;
56
import 'src/enums.dart';
67
import 'src/client.dart';
7-
import 'src/response.dart';
88
import 'src/service.dart';
9+
import 'models.dart' as models;
910

1011
export 'src/response.dart';
1112
export 'src/client.dart';

templates/dart/lib/services/service.dart.twig

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class {{ service.name | caseUcfirst }} extends Service {
1616
{{ method.description|dartComment }}
1717
///
1818
{% endif %}
19-
Future<Response> {{ method.name | caseCamel }}({{ _self.method_parameters(method.parameters) }}) {
19+
{% if method.type == 'webAuth' %}Future{% elseif method.type == 'location' %} Future<Uint8List> {% else %} {% if method.responseModel and method.responseModel != 'any' %}Future<models.{{method.responseModel | ucFirstAndEscape}}>{% else %}Future{% endif %}{% endif %} {{ method.name | caseCamel }}({{ _self.method_parameters(method.parameters) }}) async {
2020
final String path = '{{ method.path }}'{% for parameter in method.parameters.path %}.replaceAll(RegExp('{{ '{' }}{{ parameter.name | caseCamel }}{{ '}' }}'), {{ parameter.name | caseCamel | escapeKeyword }}){% endfor %};
2121

2222
final Map<String, dynamic> params = {
@@ -42,15 +42,17 @@ class {{ service.name | caseUcfirst }} extends Service {
4242
params[key] = params[key].toString();
4343
}});
4444

45-
return client.call(HttpMethod.{{ method.method | caseLower }}, path: path, params: params, responseType: ResponseType.bytes);
45+
final res = await client.call(HttpMethod.{{ method.method | caseLower }}, path: path, params: params, responseType: ResponseType.bytes);
46+
return res.data;
4647
{% else %}
4748
final Map<String, String> headers = {
4849
{% for key, header in method.headers %}
4950
'{{ key }}': '{{ header }}',
5051
{% endfor %}
5152
};
5253

53-
return client.call(HttpMethod.{{ method.method | caseLower }}, path: path, params: params, headers: headers);
54+
final res = await client.call(HttpMethod.{{ method.method | caseLower }}, path: path, params: params, headers: headers);
55+
return {% if method.responseModel and method.responseModel != 'any' %}models.{{method.responseModel | ucFirstAndEscape}}.fromMap(res.data){% else %} res.data{% endif %};
5456
{% endif %}
5557
}
5658
{% endfor %}

0 commit comments

Comments
 (0)