From 017d0e3cf084246cb85fa428f1972a678d69394c Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 18 Feb 2021 08:22:45 +0545 Subject: [PATCH 1/7] converting flutter sdk to library format --- templates/flutter/lib/client.dart.twig | 12 +--------- templates/flutter/lib/enums.dart.twig | 2 ++ templates/flutter/lib/package.dart.twig | 23 ++++++++++++++++--- templates/flutter/lib/service.dart.twig | 2 +- .../flutter/lib/services/service.dart.twig | 18 ++------------- 5 files changed, 26 insertions(+), 31 deletions(-) diff --git a/templates/flutter/lib/client.dart.twig b/templates/flutter/lib/client.dart.twig index aaebef676..74f006a6b 100644 --- a/templates/flutter/lib/client.dart.twig +++ b/templates/flutter/lib/client.dart.twig @@ -1,14 +1,4 @@ -import 'dart:io'; - -import 'package:dio/dio.dart'; -import 'package:flutter/foundation.dart'; -import 'package:dio/adapter.dart'; -import 'package:dio_cookie_manager/dio_cookie_manager.dart'; -import 'package:cookie_jar/cookie_jar.dart'; -import 'package:path_provider/path_provider.dart'; -import 'package:package_info_plus/package_info_plus.dart'; - -import 'enums.dart'; +part of {{ language.params.packageName }}; class Client { String endPoint; diff --git a/templates/flutter/lib/enums.dart.twig b/templates/flutter/lib/enums.dart.twig index 2757f6073..f6d6920f1 100644 --- a/templates/flutter/lib/enums.dart.twig +++ b/templates/flutter/lib/enums.dart.twig @@ -1,3 +1,5 @@ +part of {{ language.params.packageName }}; + enum HttpMethod { get, post, put, delete, patch } extension HttpMethodString on HttpMethod { diff --git a/templates/flutter/lib/package.dart.twig b/templates/flutter/lib/package.dart.twig index f0b409945..7fe91c24f 100644 --- a/templates/flutter/lib/package.dart.twig +++ b/templates/flutter/lib/package.dart.twig @@ -1,7 +1,24 @@ +library {{ language.params.packageName }}; + + +import 'dart:io'; +import 'package:universal_html/html.dart' as html; +import 'package:dio/dio.dart'; +import 'package:meta/meta.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter_web_auth/flutter_web_auth.dart'; +import 'package:dio/adapter.dart'; +import 'package:dio_cookie_manager/dio_cookie_manager.dart'; +import 'package:cookie_jar/cookie_jar.dart'; +import 'package:path_provider/path_provider.dart'; +import 'package:package_info_plus/package_info_plus.dart'; + + export 'package:dio/dio.dart' show Response; -export 'client.dart'; -export 'enums.dart'; +part 'client.dart'; +part 'enums.dart'; +part 'service.dart'; {% for service in spec.services %} -export 'services/{{service.name | caseDash}}.dart'; +part 'services/{{service.name | caseDash}}.dart'; {% endfor %} diff --git a/templates/flutter/lib/service.dart.twig b/templates/flutter/lib/service.dart.twig index 1ae319b70..dad7e3472 100644 --- a/templates/flutter/lib/service.dart.twig +++ b/templates/flutter/lib/service.dart.twig @@ -1,4 +1,4 @@ -import 'client.dart'; +part of {{ language.params.packageName }}; class Service { final Client client; diff --git a/templates/flutter/lib/services/service.dart.twig b/templates/flutter/lib/services/service.dart.twig index e5514f205..43f835106 100644 --- a/templates/flutter/lib/services/service.dart.twig +++ b/templates/flutter/lib/services/service.dart.twig @@ -1,3 +1,5 @@ +part of {{ language.params.packageName }}; + {% macro parameter(parameter) %} {% if parameter.name == 'orderType' %}{% if parameter.required %}@required {% endif %}{{ 'OrderType orderType = OrderType.asc' }}{% else %} {% if parameter.required %}@required {% endif %}{{ parameter.type | typeName }} {{ parameter.name | caseCamel }}{{ parameter | escapeDollarSign | paramDefault }}{% endif %} @@ -10,22 +12,6 @@ '{{ parameter.name }}': {{ parameter.name | caseCamel }},{% endif %} {% endmacro %} -{% if(service.features.webAuth) %} -import 'dart:io'; -import 'package:universal_html/html.dart' as html; -{% endif %} - -import 'package:dio/dio.dart'; -import 'package:meta/meta.dart'; -{% if(service.features.webAuth) %} -import 'package:flutter/foundation.dart'; -import 'package:flutter_web_auth/flutter_web_auth.dart'; -{% endif %} - -import "../client.dart"; -import '../enums.dart'; -import "../service.dart"; - class {{ service.name | caseUcfirst }} extends Service { {{ service.name | caseUcfirst }}(Client client): super(client); {% for method in service.methods %} From 3a329141480f2c3125a8ca1a7d84c33d8375fecf Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 18 Feb 2021 08:22:54 +0545 Subject: [PATCH 2/7] converting dart sdk to library format --- templates/dart/lib/client.dart.twig | 6 +----- templates/dart/lib/enums.dart.twig | 2 ++ templates/dart/lib/package.dart.twig | 16 +++++++++++++--- templates/dart/lib/service.dart.twig | 2 +- templates/dart/lib/services/service.dart.twig | 8 ++------ 5 files changed, 19 insertions(+), 15 deletions(-) diff --git a/templates/dart/lib/client.dart.twig b/templates/dart/lib/client.dart.twig index f84de843e..cddd2c644 100644 --- a/templates/dart/lib/client.dart.twig +++ b/templates/dart/lib/client.dart.twig @@ -1,8 +1,4 @@ -import 'dart:io'; -import 'package:dio/dio.dart'; -import 'package:dio/adapter.dart'; - -import 'enums.dart'; +part of {{ language.params.packageName }}; class Client { String endPoint; diff --git a/templates/dart/lib/enums.dart.twig b/templates/dart/lib/enums.dart.twig index 2757f6073..f6d6920f1 100644 --- a/templates/dart/lib/enums.dart.twig +++ b/templates/dart/lib/enums.dart.twig @@ -1,3 +1,5 @@ +part of {{ language.params.packageName }}; + enum HttpMethod { get, post, put, delete, patch } extension HttpMethodString on HttpMethod { diff --git a/templates/dart/lib/package.dart.twig b/templates/dart/lib/package.dart.twig index e266bddee..bf9c79c82 100644 --- a/templates/dart/lib/package.dart.twig +++ b/templates/dart/lib/package.dart.twig @@ -1,7 +1,17 @@ +library {{ language.params.packageName }}; + + +import 'dart:io'; +import 'package:dio/dio.dart'; +import 'package:meta/meta.dart'; +import 'package:dio/adapter.dart'; + + export 'package:dio/dio.dart' show Response, MultipartFile; -export 'client.dart'; -export 'enums.dart'; +part 'client.dart'; +part 'enums.dart'; +part 'service.dart'; {% for service in spec.services %} -export 'services/{{service.name | caseDash}}.dart'; +part 'services/{{service.name | caseDash}}.dart'; {% endfor %} diff --git a/templates/dart/lib/service.dart.twig b/templates/dart/lib/service.dart.twig index 1ae319b70..dad7e3472 100644 --- a/templates/dart/lib/service.dart.twig +++ b/templates/dart/lib/service.dart.twig @@ -1,4 +1,4 @@ -import 'client.dart'; +part of {{ language.params.packageName }}; class Service { final Client client; diff --git a/templates/dart/lib/services/service.dart.twig b/templates/dart/lib/services/service.dart.twig index 19c011784..d85795050 100644 --- a/templates/dart/lib/services/service.dart.twig +++ b/templates/dart/lib/services/service.dart.twig @@ -1,3 +1,5 @@ +part of {{ language.params.packageName }}; + {% macro parameter(parameter) %} {% if parameter.name == 'orderType' %}{% if parameter.required %}@required {% endif %}{{ 'OrderType orderType = OrderType.asc' }}{% else %} {% if parameter.required %}@required {% endif %}{{ parameter.type | typeName }} {{ parameter.name | caseCamel }}{{ parameter | escapeDollarSign | paramDefault }}{% endif %} @@ -10,12 +12,6 @@ '{{ parameter.name }}': {{ parameter.name | caseCamel }},{% endif %} {% endmacro %} -import 'package:dio/dio.dart'; -import 'package:meta/meta.dart'; -import "../client.dart"; -import '../enums.dart'; -import "../service.dart"; - class {{ service.name | caseUcfirst }} extends Service { {{ service.name | caseUcfirst }}(Client client): super(client); {% for method in service.methods %} From 916de91cedcff1dce5299b79ff8abb1092043d2a Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 18 Feb 2021 08:28:28 +0545 Subject: [PATCH 3/7] set the package name for flutter and dart sdk to better test packages locally --- example.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/example.php b/example.php index e14114544..7c309acea 100644 --- a/example.php +++ b/example.php @@ -196,7 +196,10 @@ function getSSLPage($url) { $sdk->generate(__DIR__ . '/examples/python'); // Dart - $sdk = new SDK(new Dart(), new Swagger2($spec)); + $dart = new Dart(); + $dart->setPackageName('dart_appwrite'); + + $sdk = new SDK($dart, new Swagger2($spec)); $sdk ->setName('NAME') @@ -219,7 +222,9 @@ function getSSLPage($url) { $sdk->generate(__DIR__ . '/examples/dart'); // Flutter - $sdk = new SDK(new Flutter(), new Swagger2($spec)); + $flutter = new Flutter(); + $flutter->setPackageName('appwrite'); + $sdk = new SDK($flutter, new Swagger2($spec)); $sdk ->setName('NAME') From e603b1477cb8b3c68b4a4053a497cc2be5807804 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Sun, 21 Feb 2021 08:05:06 +0545 Subject: [PATCH 4/7] remove extra spacing --- templates/dart/lib/package.dart.twig | 1 - templates/flutter/lib/package.dart.twig | 1 - 2 files changed, 2 deletions(-) diff --git a/templates/dart/lib/package.dart.twig b/templates/dart/lib/package.dart.twig index bf9c79c82..474e4709f 100644 --- a/templates/dart/lib/package.dart.twig +++ b/templates/dart/lib/package.dart.twig @@ -1,6 +1,5 @@ library {{ language.params.packageName }}; - import 'dart:io'; import 'package:dio/dio.dart'; import 'package:meta/meta.dart'; diff --git a/templates/flutter/lib/package.dart.twig b/templates/flutter/lib/package.dart.twig index 7fe91c24f..14934dc75 100644 --- a/templates/flutter/lib/package.dart.twig +++ b/templates/flutter/lib/package.dart.twig @@ -1,6 +1,5 @@ library {{ language.params.packageName }}; - import 'dart:io'; import 'package:universal_html/html.dart' as html; import 'package:dio/dio.dart'; From 640195347b6963acb260abd0ff833856092b7919 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 22 Feb 2021 14:14:46 +0545 Subject: [PATCH 5/7] exception model and handling in flutter --- templates/flutter/lib/client.dart.twig | 28 ++++++++++++++--------- templates/flutter/lib/exception.dart.twig | 10 ++++++++ templates/flutter/lib/package.dart.twig | 1 + 3 files changed, 28 insertions(+), 11 deletions(-) create mode 100644 templates/flutter/lib/exception.dart.twig diff --git a/templates/flutter/lib/client.dart.twig b/templates/flutter/lib/client.dart.twig index 74f006a6b..8ea978392 100644 --- a/templates/flutter/lib/client.dart.twig +++ b/templates/flutter/lib/client.dart.twig @@ -108,18 +108,24 @@ class Client { method: method.name(), ); - if(headers['content-type'] == 'multipart/form-data') { - return http.request(path, data: FormData.fromMap(params), options: options); - } + try { + if(headers['content-type'] == 'multipart/form-data') { + return http.request(path, data: FormData.fromMap(params), options: options); + } - if (method == HttpMethod.get) { - params.keys.forEach((key) {if (params[key] is int || params[key] is double) { - params[key] = params[key].toString(); - }}); - - return http.get(path, queryParameters: params, options: options); - } else { - return http.request(path, data: params, options: options); + if (method == HttpMethod.get) { + params.keys.forEach((key) {if (params[key] is int || params[key] is double) { + params[key] = params[key].toString(); + }}); + + return http.get(path, queryParameters: params, options: options); + } else { + return http.request(path, data: params, options: options); + } + } on DioError catch(e) { + throw {{spec.title | caseUcfirst}}Exception(e.response.data['message'],e.response.data['code'], e.response.data); + } catch(e) { + throw {{spec.title | caseUcfirst}}Exception(e.message, 0); } } } diff --git a/templates/flutter/lib/exception.dart.twig b/templates/flutter/lib/exception.dart.twig new file mode 100644 index 000000000..5188a6e90 --- /dev/null +++ b/templates/flutter/lib/exception.dart.twig @@ -0,0 +1,10 @@ +part of {{ language.params.packageName }}; + +class {{spec.title | caseUcfirst}}Exception implements Exception { + final String message; + final int code; + final dynamic response; + + {{spec.title | caseUcfirst}}Exception([this.message = "", this.code = 0, this.response]); + +} \ No newline at end of file diff --git a/templates/flutter/lib/package.dart.twig b/templates/flutter/lib/package.dart.twig index 14934dc75..948bec4bb 100644 --- a/templates/flutter/lib/package.dart.twig +++ b/templates/flutter/lib/package.dart.twig @@ -18,6 +18,7 @@ export 'package:dio/dio.dart' show Response; part 'client.dart'; part 'enums.dart'; part 'service.dart'; +part 'exception.dart'; {% for service in spec.services %} part 'services/{{service.name | caseDash}}.dart'; {% endfor %} From 6f5a8726d970ebfdd5c6317ab523f6e3c40e8fc7 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Wed, 24 Feb 2021 16:32:28 +0545 Subject: [PATCH 6/7] fixing when no response and other small fixes --- templates/flutter/lib/client.dart.twig | 11 +++++++---- templates/flutter/lib/exception.dart.twig | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/templates/flutter/lib/client.dart.twig b/templates/flutter/lib/client.dart.twig index 8ea978392..88810dff3 100644 --- a/templates/flutter/lib/client.dart.twig +++ b/templates/flutter/lib/client.dart.twig @@ -110,7 +110,7 @@ class Client { try { if(headers['content-type'] == 'multipart/form-data') { - return http.request(path, data: FormData.fromMap(params), options: options); + return await http.request(path, data: FormData.fromMap(params), options: options); } if (method == HttpMethod.get) { @@ -118,14 +118,17 @@ class Client { params[key] = params[key].toString(); }}); - return http.get(path, queryParameters: params, options: options); + return await http.get(path, queryParameters: params, options: options); } else { - return http.request(path, data: params, options: options); + return await http.request(path, data: params, options: options); } } on DioError catch(e) { + if(e.response == null) { + throw {{spec.title | caseUcfirst}}AppwriteException(e.message); + } throw {{spec.title | caseUcfirst}}Exception(e.response.data['message'],e.response.data['code'], e.response.data); } catch(e) { - throw {{spec.title | caseUcfirst}}Exception(e.message, 0); + throw {{spec.title | caseUcfirst}}Exception(e.message); } } } diff --git a/templates/flutter/lib/exception.dart.twig b/templates/flutter/lib/exception.dart.twig index 5188a6e90..ced547d6c 100644 --- a/templates/flutter/lib/exception.dart.twig +++ b/templates/flutter/lib/exception.dart.twig @@ -5,6 +5,6 @@ class {{spec.title | caseUcfirst}}Exception implements Exception { final int code; final dynamic response; - {{spec.title | caseUcfirst}}Exception([this.message = "", this.code = 0, this.response]); + {{spec.title | caseUcfirst}}Exception([this.message = "", this.code, this.response]); } \ No newline at end of file From c6dce4712ef6c9267444de55d23beadaadaa6335 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 25 Feb 2021 18:48:34 +0545 Subject: [PATCH 7/7] fix typo --- templates/flutter/lib/client.dart.twig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/flutter/lib/client.dart.twig b/templates/flutter/lib/client.dart.twig index 88810dff3..b6e01f995 100644 --- a/templates/flutter/lib/client.dart.twig +++ b/templates/flutter/lib/client.dart.twig @@ -124,7 +124,7 @@ class Client { } } on DioError catch(e) { if(e.response == null) { - throw {{spec.title | caseUcfirst}}AppwriteException(e.message); + throw {{spec.title | caseUcfirst}}Exception(e.message); } throw {{spec.title | caseUcfirst}}Exception(e.response.data['message'],e.response.data['code'], e.response.data); } catch(e) {