Skip to content

Commit 91e1553

Browse files
authored
Merge pull request #78 from lohanidamodar/dart-sdk
[Draft] Dart sdk
2 parents 7cb7720 + cfb8609 commit 91e1553

File tree

8 files changed

+31
-99
lines changed

8 files changed

+31
-99
lines changed

src/SDK/Language/Dart.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ public function getTypeName($type)
125125
case self::TYPE_ARRAY:
126126
return 'List';
127127
case self::TYPE_OBJECT:
128-
return 'dynamic';
128+
return 'Map';
129129
break;
130130
}
131131

@@ -151,7 +151,7 @@ public function getParamDefault(array $param)
151151
if(empty($default) && $default !== 0 && $default !== false) {
152152
switch ($type) {
153153
case self::TYPE_OBJECT:
154-
$output .= '{}';
154+
$output .= 'const {}';
155155
break;
156156
case self::TYPE_NUMBER:
157157
case self::TYPE_INTEGER:
@@ -161,7 +161,7 @@ public function getParamDefault(array $param)
161161
$output .= 'false';
162162
break;
163163
case self::TYPE_ARRAY:
164-
$output .= '[]';
164+
$output .= 'const []';
165165
break;
166166
case self::TYPE_STRING:
167167
$output .= "''";
@@ -170,11 +170,11 @@ public function getParamDefault(array $param)
170170
}
171171
else {
172172
switch ($type) {
173-
case self::TYPE_OBJECT:
174173
case self::TYPE_NUMBER:
175174
case self::TYPE_INTEGER:
176175
$output .= $default;
177176
break;
177+
case self::TYPE_OBJECT:
178178
case self::TYPE_ARRAY:
179179
$output .= 'const '.$default;
180180
break;

templates/dart/docs/example.md.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ void main() { // Init SDK
2424
{% if parameter.required %}
2525
{{ parameter.name | caseCamel }}: {{ parameter | paramExample }},
2626
{% endif %}
27-
{% endfor %} );
27+
{% endfor %}{% if method.parameters.all|length > 0 %} {% endif %});
2828

2929
{% if method.type == 'location' %}
3030
print(result); // Resource URL string

templates/dart/lib/client.dart.twig

Lines changed: 6 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
11
import 'dart:io';
2-
32
import 'package:dio/dio.dart';
43
import 'package:dio/adapter.dart';
5-
import 'package:dio_cookie_manager/dio_cookie_manager.dart';
6-
import 'package:cookie_jar/cookie_jar.dart';
7-
import 'package:path_provider/path_provider.dart';
8-
import 'package:package_info/package_info.dart';
94

105
import 'enums.dart';
116

@@ -17,16 +12,8 @@ class Client {
1712
bool selfSigned;
1813
bool initialized = false;
1914
Dio http;
20-
PersistCookieJar cookieJar;
2115

22-
Client({this.endPoint = 'https://appwrite.io/v1', this.selfSigned = false, Dio http}) : this.http = http ?? Dio() {
23-
24-
type = (Platform.isIOS) ? 'ios' : type;
25-
type = (Platform.isMacOS) ? 'macos' : type;
26-
type = (Platform.isAndroid) ? 'android' : type;
27-
type = (Platform.isLinux) ? 'linux' : type;
28-
type = (Platform.isWindows) ? 'windows' : type;
29-
type = (Platform.isFuchsia) ? 'fuchsia' : type;
16+
Client({this.endPoint = '{{spec.endpoint}}', this.selfSigned = false, Dio http}) : this.http = http ?? Dio() {
3017

3118
this.headers = {
3219
'content-type': 'application/json',
@@ -37,14 +24,7 @@ class Client {
3724

3825
assert(endPoint.startsWith(RegExp("http://|https://")), "endPoint $endPoint must start with 'http'");
3926
}
40-
41-
Future<Directory> _getCookiePath() async {
42-
final directory = await getApplicationDocumentsDirectory();
43-
final path = directory.path;
44-
final Directory dir = new Directory('$path/cookies');
45-
await dir.create();
46-
return dir;
47-
}
27+
4828

4929
{% for header in spec.global.headers %}
5030
{% if header.description %}
@@ -76,17 +56,8 @@ class Client {
7656

7757
Future init() async {
7858
if(!initialized) {
79-
final Directory cookieDir = await _getCookiePath();
80-
81-
cookieJar = new PersistCookieJar(dir:cookieDir.path);
82-
8359
this.http.options.baseUrl = this.endPoint;
8460
this.http.options.validateStatus = (status) => status < 400;
85-
this.http.interceptors.add(CookieManager(cookieJar));
86-
87-
PackageInfo packageInfo = await PackageInfo.fromPlatform();
88-
89-
addHeader('Origin', 'appwrite-' + type + '://' + packageInfo.packageName);
9061
}
9162
}
9263

@@ -112,6 +83,10 @@ class Client {
11283
}
11384

11485
if (method == HttpMethod.get) {
86+
params.keys.forEach((key) {if (params[key] is int || params[key] is double) {
87+
params[key] = params[key].toString();
88+
}});
89+
11590
return http.get(path, queryParameters: params, options: options);
11691
} else {
11792
return http.request(path, data: params, options: options);

templates/dart/lib/package.dart.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export 'package:dio/dio.dart' show Response;
1+
export 'package:dio/dio.dart' show Response, MultipartFile;
22

33
export 'client.dart';
44
export 'enums.dart';

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

Lines changed: 5 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,8 @@
1010
'{{ parameter.name }}': {{ parameter.name | caseCamel }},{% endif %}
1111
{% endmacro %}
1212

13-
{% if(service.features.webAuth) %}
14-
import 'dart:io';
15-
{% endif %}
16-
1713
import 'package:dio/dio.dart';
1814
import 'package:meta/meta.dart';
19-
{% if(service.features.webAuth) %}
20-
import 'package:flutter_web_auth/flutter_web_auth.dart';
21-
{% endif %}
22-
2315
import "../client.dart";
2416
import '../enums.dart';
2517
import "../service.dart";
@@ -55,43 +47,11 @@ class {{ service.name | caseUcfirst }} extends Service {
5547
{% endif %}
5648
};
5749

58-
{% if method.type == 'webAuth' %}
59-
60-
final List query = [];
61-
62-
params.forEach((key, value) {
63-
if (value is List) {
64-
for (var item in value) {
65-
query.add(Uri.encodeComponent(key + '[]') + '=' + Uri.encodeComponent(item));
66-
}
67-
}
68-
else {
69-
query.add(Uri.encodeComponent(key) + '=' + Uri.encodeComponent(value));
70-
}
71-
});
72-
73-
Uri endpoint = Uri.parse(client.endPoint);
74-
Uri url = new Uri(scheme: endpoint.scheme,
75-
host: endpoint.host,
76-
port: endpoint.port,
77-
path: endpoint.path + path,
78-
query: query.join('&')
79-
);
80-
81-
return FlutterWebAuth.authenticate(
82-
url: url.toString(),
83-
callbackUrlScheme: "appwrite-callback-" + client.config['project']
84-
).then((value) async {
85-
Uri url = Uri.parse(value);
86-
Cookie cookie = new Cookie(url.queryParameters['key'], url.queryParameters['secret']);
87-
cookie.domain = Uri.parse(client.endPoint).host;
88-
cookie.httpOnly = true;
89-
cookie.path = '/';
90-
List<Cookie> cookies = [cookie];
91-
await client.init();
92-
client.cookieJar.saveFromResponse(Uri.parse(client.endPoint), cookies);
93-
});
94-
{% elseif method.type == 'location' %}
50+
{% if method.type == 'location' %}
51+
params.keys.forEach((key) {if (params[key] is int || params[key] is double) {
52+
params[key] = params[key].toString();
53+
}});
54+
9555
Uri endpoint = Uri.parse(client.endPoint);
9656
Uri location = new Uri(scheme: endpoint.scheme,
9757
host: endpoint.host,

templates/dart/pubspec.yaml.twig

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,8 @@ documentation: {{ spec.contactURL }}
88
environment:
99
sdk: '>=2.6.0 <3.0.0'
1010
dependencies:
11-
meta: ^1.2.2
12-
path_provider: ^1.6.11
13-
package_info: ^0.4.1
14-
dio: ^3.0.9
15-
cookie_jar: ^1.0.1
16-
dio_cookie_manager: ^1.0.0
17-
flutter_web_auth: ^0.2.4
18-
flutter:
19-
sdk: flutter
11+
meta: ^1.1.8
12+
dio: ^3.0.10
2013
2114
dev_dependencies:
22-
flutter_test:
23-
sdk: flutter
15+
test:

tests/SDKTest.php

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,13 @@ class SDKTest extends TestCase
3535
'build' => [
3636
'mkdir -p tests/sdks/dart/tests',
3737
'cp tests/languages/dart/tests.dart tests/sdks/dart/tests/tests.dart',
38-
'docker run --rm -v $(pwd):/app -w /app/tests/sdks/dart --env PUB_CACHE=vendor appwrite/flutter:0.3.0 flutter pub get',
38+
'docker run --rm -v $(pwd):/app -w /app/tests/sdks/dart --env PUB_CACHE=vendor google/dart:latest pub get',
3939
],
4040
'envs' => [
41-
'flutter' => 'docker run --rm -v $(pwd):/app -w /app/tests/sdks/dart --env PUB_CACHE=vendor appwrite/flutter:0.3.0 flutter pub run tests/tests.dart',
42-
//'dart-2.6' => 'docker run --rm -v $(pwd):/app -w /app/tests/sdks/dart --env PUB_CACHE=tests/sdks/dart/vendor google/dart:2.6 pub run test/tests.dart',
43-
//'dart-2.7' => 'docker run --rm -v $(pwd):/app -w /app/tests/sdks/dart --env PUB_CACHE=tests/sdks/dart/vendor google/dart:2.7 pub run test/tests.dart',
44-
//'dart-2.8-dev' => 'docker run --rm -v $(pwd):/app -w /app/tests/sdks/dart --env PUB_CACHE=tests/sdks/dart/vendor google/dart:2.8-dev pub run test/tests.dart',
41+
// 'dart-2.6' => 'docker run --rm -v $(pwd):/app -w /app/tests/sdks/dart --env PUB_CACHE=vendor google/dart:2.6 pub run tests/tests.dart',
42+
'dart-2.7' => 'docker run --rm -v $(pwd):/app -w /app/tests/sdks/dart --env PUB_CACHE=vendor google/dart:2.7 pub run tests/tests.dart',
43+
'dart-2.8' => 'docker run --rm --tty -it -v $(pwd):/app -w /app/tests/sdks/dart --env PUB_CACHE=vendor google/dart:2.8 pub run tests/tests.dart',
44+
'dart-2.10' => 'docker run --rm -v $(pwd):/app -w /app/tests/sdks/dart --env PUB_CACHE=vendor google/dart:2.10 dart pub run tests/tests.dart',
4545
],
4646
],
4747

@@ -178,6 +178,7 @@ public function testHTTPSuccess()
178178
->setLogo('https://appwrite.io/v1/images/console.png')
179179
->setWarning('**WORK IN PROGRESS - THIS IS JUST A TEST SDK**')
180180
->setVersion('0.0.1')
181+
->setExamples('**EXAMPLES** <HTML>')
181182
->setNamespace("io appwrite")
182183
->setGitUserName('repoowner')
183184
->setGitRepoName('reponame')

tests/languages/dart/tests.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import '../lib/appwrite.dart';
1+
import '../lib/packageName.dart';
22

33
void main() async {
44
Client client = Client();
@@ -49,6 +49,10 @@ void main() async {
4949
response = await general.redirect();
5050
print(response.data['result']);
5151

52+
final file = await MultipartFile.fromFile('../../resources/file.png',filename: 'file.png');
53+
response = await general.upload(x:'string',y: 123,z:['string in array'], file: file);
54+
print(response.data['result']);
55+
5256
// response = await general.setCookie();
5357
// print(response.data['result']);
5458

0 commit comments

Comments
 (0)