Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/SDK/Language/Dart.php
Original file line number Diff line number Diff line change
Expand Up @@ -511,7 +511,7 @@ public function getFilters(): array
new TwigFilter('dartComment', function ($value) {
$value = explode("\n", $value);
foreach ($value as $key => $line) {
$value[$key] = " /// " . wordwrap($value[$key], 75, "\n /// ");
$value[$key] = " /// " . wordwrap($value[$key], 75, "\n /// ");
}
return implode("\n", $value);
}, ['is_safe' => ['html']]),
Expand Down
7 changes: 6 additions & 1 deletion src/SDK/Language/Flutter.php
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@ public function getFiles(): array
[
'scope' => 'service',
'destination' => '/test/services/{{service.name | caseDash}}_test.dart',
'template' => 'dart/test/services/service_test.dart.twig',
'template' => 'flutter/test/services/service_test.dart.twig',
],
[
'scope' => 'definition',
Expand Down Expand Up @@ -345,6 +345,11 @@ public function getFiles(): array
'destination' => '.github/workflows/format.yml',
'template' => 'flutter/.github/workflows/format.yml.twig',
],
[
'scope' => 'default',
'destination' => '.github/workflows/test.yml',
'template' => 'flutter/.github/workflows/test.yml',
],
[
'scope' => 'enum',
'destination' => 'lib/src/enums/{{ enum.name | caseSnake }}.dart',
Expand Down
18 changes: 9 additions & 9 deletions templates/dart/base/requests/api.twig
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
{% import 'dart/base/utils.twig' as utils %}
final Map<String, dynamic> apiParams = {
{{ utils.map_parameter(method.parameters.query) }}
{{ utils.map_parameter(method.parameters.body) }}
};
final Map<String, dynamic> apiParams = {
{{ utils.map_parameter(method.parameters.query) }}
{{ utils.map_parameter(method.parameters.body) }}
};

final Map<String, String> apiHeaders = {
{{ utils.map_headers(method.headers) }}
};
final Map<String, String> apiHeaders = {
{{ utils.map_headers(method.headers) }}
};

final res = await client.call(HttpMethod.{{ method.method | caseLower }}, path: apiPath, params: apiParams, headers: apiHeaders);
final res = await client.call(HttpMethod.{{ method.method | caseLower }}, path: apiPath, params: apiParams, headers: apiHeaders);

return {% if method.responseModel and method.responseModel != 'any' %}models.{{method.responseModel | caseUcfirst | overrideIdentifier}}.fromMap(res.data){% else %} res.data{% endif %};
return {% if method.responseModel and method.responseModel != 'any' %}models.{{method.responseModel | caseUcfirst | overrideIdentifier}}.fromMap(res.data){% else %} res.data{% endif %};
38 changes: 19 additions & 19 deletions templates/dart/base/requests/file.twig
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
{% import 'dart/base/utils.twig' as utils %}
final Map<String, dynamic> apiParams = {
{{ utils.map_parameter(method.parameters.query) }}
{{ utils.map_parameter(method.parameters.body) }}
};
final Map<String, dynamic> apiParams = {
{{ utils.map_parameter(method.parameters.query) }}
{{ utils.map_parameter(method.parameters.body) }}
};

final Map<String, String> apiHeaders = {
{{ utils.map_headers(method.headers) }}
};
final Map<String, String> apiHeaders = {
{{ utils.map_headers(method.headers) }}
};

{% if 'multipart/form-data' in method.consumes %}
String idParamName = '';
String idParamName = '';
{% for parameter in method.parameters.all %}
{% if parameter.type == 'file' %}
final paramName = '{{ parameter.name }}';
final paramName = '{{ parameter.name }}';
{% endif %}
{% if parameter.isUploadID %}
idParamName = '{{ parameter.name }}';
idParamName = '{{ parameter.name }}';
{% endif %}
{% endfor %}
final res = await client.chunkedUpload(
path: apiPath,
params: apiParams,
paramName: paramName,
idParamName: idParamName,
headers: apiHeaders,
onProgress: onProgress,
);
final res = await client.chunkedUpload(
path: apiPath,
params: apiParams,
paramName: paramName,
idParamName: idParamName,
headers: apiHeaders,
onProgress: onProgress,
);

return {% if method.responseModel and method.responseModel != 'any' %}models.{{method.responseModel | caseUcfirst | overrideIdentifier}}.fromMap(res.data){% else %} res.data{% endif %};
return {% if method.responseModel and method.responseModel != 'any' %}models.{{method.responseModel | caseUcfirst | overrideIdentifier}}.fromMap(res.data){% else %} res.data{% endif %};
{% endif %}
14 changes: 7 additions & 7 deletions templates/dart/base/requests/location.twig
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
{% import 'dart/base/utils.twig' as utils %}
final Map<String, dynamic> params = {
{{ utils.map_parameter(method.parameters.query) }}
{{ utils.map_parameter(method.parameters.body) }}
final Map<String, dynamic> params = {
{{ utils.map_parameter(method.parameters.query) }}
{{ utils.map_parameter(method.parameters.body) }}
{% if method.auth|length > 0 %}{% for node in method.auth %}
{% for key,header in node|keys %}
'{{header|caseLower}}': client.config['{{header|caseLower}}'],
'{{header|caseLower}}': client.config['{{header|caseLower}}'],
{% endfor %}
{% endfor %}
{% endif %}
};
};

final res = await client.call(HttpMethod.{{ method.method | caseLower }}, path: apiPath, params: params, responseType: ResponseType.bytes);
return res.data;
final res = await client.call(HttpMethod.{{ method.method | caseLower }}, path: apiPath, params: params, responseType: ResponseType.bytes);
return res.data;
46 changes: 23 additions & 23 deletions templates/dart/base/requests/oauth.twig
Original file line number Diff line number Diff line change
@@ -1,34 +1,34 @@
{% import 'dart/base/utils.twig' as utils %}
final Map<String, dynamic> params = {
{{ utils.map_parameter(method.parameters.query) }}
{{ utils.map_parameter(method.parameters.body) }}
final Map<String, dynamic> params = {
{{ utils.map_parameter(method.parameters.query) }}
{{ utils.map_parameter(method.parameters.body) }}
{% if method.auth|length > 0 %}
{% for node in method.auth %}
{% for key,header in node|keys %}
'{{header|caseLower}}': client.config['{{header|caseLower}}'],
'{{header|caseLower}}': client.config['{{header|caseLower}}'],
{% endfor %}
{% endfor %}
{% endif %}
};
};

final List query = [];
final List query = [];

params.forEach((key, value) {
if (value is List) {
for (var item in value) {
query.add(Uri.encodeComponent(key + '[]') + '=' + Uri.encodeComponent(item));
}
} else if(value != null) {
query.add(Uri.encodeComponent(key) + '=' + Uri.encodeComponent(value));
}
});
params.forEach((key, value) {
if (value is List) {
for (var item in value) {
query.add(Uri.encodeComponent(key + '[]') + '=' + Uri.encodeComponent(item));
}
} else if (value != null) {
query.add(Uri.encodeComponent(key) + '=' + Uri.encodeComponent(value));
}
});

Uri endpoint = Uri.parse(client.endPoint);
Uri url = Uri(scheme: endpoint.scheme,
host: endpoint.host,
port: endpoint.port,
path: endpoint.path + apiPath,
query: query.join('&')
);
Uri endpoint = Uri.parse(client.endPoint);
Uri url = Uri(scheme: endpoint.scheme,
host: endpoint.host,
port: endpoint.port,
path: endpoint.path + apiPath,
query: query.join('&')
);

return client.webAuth(url);
return client.webAuth(url);
3 changes: 1 addition & 2 deletions templates/dart/lib/id.dart.twig
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@ class ID {
final now = DateTime.now();
final sec = (now.millisecondsSinceEpoch / 1000).floor();
final usec = now.microsecondsSinceEpoch - (sec * 1000000);
return sec.toRadixString(16) +
usec.toRadixString(16).padLeft(5, '0');
return sec.toRadixString(16) + usec.toRadixString(16).padLeft(5, '0');
}

// Generate a unique ID with padding to have a longer ID
Expand Down
2 changes: 1 addition & 1 deletion templates/dart/lib/package.dart.twig
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/// {{spec.title | caseUcfirst}} {{sdk.name}} SDK
///
/// This SDK is compatible with Appwrite server version {{spec.version | split('.') | slice(0,2) | join('.') ~ '.x' }}.
/// This SDK is compatible with Appwrite server version {{spec.version | split('.') | slice(0,2) | join('.') ~ '.x' }}.
/// For older versions, please check
/// [previous releases](https://github.com/{{sdk.gitUserName}}/{{sdk.gitRepoName}}/releases).
library {{ language.params.packageName }};
Expand Down
53 changes: 33 additions & 20 deletions templates/dart/lib/query.dart.twig
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
part of '{{ language.params.packageName }}.dart';


/// Helper class to generate query strings.
class Query {
final String method;
Expand All @@ -10,9 +9,7 @@ class Query {
Query._(this.method, [this.attribute = null, this.values = null]);

Map<String, dynamic> toJson() {
final map = <String, dynamic>{
'method': method,
};
final map = <String, dynamic>{'method': method};

if(attribute != null) {
map['attribute'] = attribute;
Expand Down Expand Up @@ -61,10 +58,12 @@ class Query {
Query._('search', attribute, value).toString();

/// Filter resources where [attribute] is null.
static String isNull(String attribute) => Query._('isNull', attribute).toString();
static String isNull(String attribute) =>
Query._('isNull', attribute).toString();

/// Filter resources where [attribute] is not null.
static String isNotNull(String attribute) => Query._('isNotNull', attribute).toString();
static String isNotNull(String attribute) =>
Query._('isNotNull', attribute).toString();

/// Filter resources where [attribute] is between [start] and [end] (inclusive).
static String between(String attribute, dynamic start, dynamic end) =>
Expand Down Expand Up @@ -105,44 +104,58 @@ class Query {
Query._('notEndsWith', attribute, value).toString();

/// Filter resources where document was created before [value].
static String createdBefore(String value) => Query._('createdBefore', null, value).toString();
static String createdBefore(String value) =>
Query._('createdBefore', null, value).toString();

/// Filter resources where document was created after [value].
static String createdAfter(String value) => Query._('createdAfter', null, value).toString();
static String createdAfter(String value) =>
Query._('createdAfter', null, value).toString();

/// Filter resources where document was updated before [value].
static String updatedBefore(String value) => Query._('updatedBefore', null, value).toString();
static String updatedBefore(String value) =>
Query._('updatedBefore', null, value).toString();

/// Filter resources where document was updated after [value].
static String updatedAfter(String value) => Query._('updatedAfter', null, value).toString();
static String updatedAfter(String value) =>
Query._('updatedAfter', null, value).toString();

static String or(List<String> queries) =>
Query._('or', null, queries.map((query) => jsonDecode(query)).toList()).toString();
static String or(List<String> queries) => Query._(
'or',
null,
queries.map((query) => jsonDecode(query)).toList(),
).toString();

static String and(List<String> queries) =>
Query._('and', null, queries.map((query) => jsonDecode(query)).toList()).toString();
static String and(List<String> queries) => Query._(
'and',
null,
queries.map((query) => jsonDecode(query)).toList(),
).toString();

/// Specify which attributes should be returned by the API call.
static String select(List<String> attributes) =>
Query._('select', null, attributes).toString();

/// Sort results by [attribute] ascending.
static String orderAsc(String attribute) => Query._('orderAsc', attribute).toString();
static String orderAsc(String attribute) =>
Query._('orderAsc', attribute).toString();

/// Sort results by [attribute] descending.
static String orderDesc(String attribute) => Query._('orderDesc', attribute).toString();
static String orderDesc(String attribute) =>
Query._('orderDesc', attribute).toString();

/// Return results before [id].
///
/// Refer to the [Cursor Based Pagination]({{sdk.url}}/docs/pagination#cursor-pagination)
/// docs for more information.
static String cursorBefore(String id) => Query._('cursorBefore', null, id).toString();
static String cursorBefore(String id) =>
Query._('cursorBefore', null, id).toString();

/// Return results after [id].
///
/// Refer to the [Cursor Based Pagination]({{sdk.url}}/docs/pagination#cursor-pagination)
/// docs for more information.
static String cursorAfter(String id) => Query._('cursorAfter', null, id).toString();
static String cursorAfter(String id) =>
Query._('cursorAfter', null, id).toString();

/// Return only [limit] results.
static String limit(int limit) => Query._('limit', null, limit).toString();
Expand All @@ -151,6 +164,6 @@ class Query {
///
/// Refer to the [Offset Pagination]({{sdk.url}}/docs/pagination#offset-pagination)
/// docs for more information.
static String offset(int offset) => Query._('offset', null, offset).toString();

static String offset(int offset) =>
Query._('offset', null, offset).toString();
}
Loading