|
@@ -3,6 +3,7 @@ package dartgen
|
|
|
import "text/template"
|
|
|
|
|
|
var funcMap = template.FuncMap{
|
|
|
+ "getBaseName": getBaseName,
|
|
|
"getPropertyFromMember": getPropertyFromMember,
|
|
|
"isDirectType": isDirectType,
|
|
|
"isClassListType": isClassListType,
|
|
@@ -99,6 +100,96 @@ Future _apiRequest(String method, String path, dynamic data,
|
|
|
}
|
|
|
`
|
|
|
|
|
|
+ apiFileContentV2 = `import 'dart:io';
|
|
|
+ import 'dart:convert';
|
|
|
+ import '../vars/kv.dart';
|
|
|
+ import '../vars/vars.dart';
|
|
|
+
|
|
|
+ /// send request with post method
|
|
|
+ ///
|
|
|
+ /// data: any request class that will be converted to json automatically
|
|
|
+ /// ok: is called when request succeeds
|
|
|
+ /// fail: is called when request fails
|
|
|
+ /// eventually: is always called until the nearby functions returns
|
|
|
+ Future apiPost(String path, dynamic data,
|
|
|
+ {Map<String, String>? header,
|
|
|
+ Function(Map<String, dynamic>)? ok,
|
|
|
+ Function(String)? fail,
|
|
|
+ Function? eventually}) async {
|
|
|
+ await _apiRequest('POST', path, data,
|
|
|
+ header: header, ok: ok, fail: fail, eventually: eventually);
|
|
|
+ }
|
|
|
+
|
|
|
+ /// send request with get method
|
|
|
+ ///
|
|
|
+ /// ok: is called when request succeeds
|
|
|
+ /// fail: is called when request fails
|
|
|
+ /// eventually: is always called until the nearby functions returns
|
|
|
+ Future apiGet(String path,
|
|
|
+ {Map<String, String>? header,
|
|
|
+ Function(Map<String, dynamic>)? ok,
|
|
|
+ Function(String)? fail,
|
|
|
+ Function? eventually}) async {
|
|
|
+ await _apiRequest('GET', path, null,
|
|
|
+ header: header, ok: ok, fail: fail, eventually: eventually);
|
|
|
+ }
|
|
|
+
|
|
|
+ Future _apiRequest(String method, String path, dynamic data,
|
|
|
+ {Map<String, String>? header,
|
|
|
+ Function(Map<String, dynamic>)? ok,
|
|
|
+ Function(String)? fail,
|
|
|
+ Function? eventually}) async {
|
|
|
+ var tokens = await getTokens();
|
|
|
+ try {
|
|
|
+ var client = HttpClient();
|
|
|
+ HttpClientRequest r;
|
|
|
+ if (method == 'POST') {
|
|
|
+ r = await client.postUrl(Uri.parse('https://' + serverHost + path));
|
|
|
+ } else {
|
|
|
+ r = await client.getUrl(Uri.parse('https://' + serverHost + path));
|
|
|
+ }
|
|
|
+
|
|
|
+ r.headers.set('Content-Type', 'application/json');
|
|
|
+ if (tokens != null) {
|
|
|
+ r.headers.set('Authorization', tokens.accessToken);
|
|
|
+ }
|
|
|
+ if (header != null) {
|
|
|
+ header.forEach((k, v) {
|
|
|
+ r.headers.set(k, v);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ var strData = '';
|
|
|
+ if (data != null) {
|
|
|
+ strData = jsonEncode(data);
|
|
|
+ }
|
|
|
+ r.write(strData);
|
|
|
+ var rp = await r.close();
|
|
|
+ var body = await rp.transform(utf8.decoder).join();
|
|
|
+ print('${rp.statusCode} - $path');
|
|
|
+ print('-- request --');
|
|
|
+ print(strData);
|
|
|
+ print('-- response --');
|
|
|
+ print('$body \n');
|
|
|
+ if (rp.statusCode == 404) {
|
|
|
+ if (fail != null) fail('404 not found');
|
|
|
+ } else {
|
|
|
+ Map<String, dynamic> base = jsonDecode(body);
|
|
|
+ if (rp.statusCode == 200) {
|
|
|
+ if (base['code'] != 0) {
|
|
|
+ if (fail != null) fail(base['desc']);
|
|
|
+ } else {
|
|
|
+ if (ok != null) ok(base['data']);
|
|
|
+ }
|
|
|
+ } else if (base['code'] != 0) {
|
|
|
+ if (fail != null) fail(base['desc']);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (e) {
|
|
|
+ if (fail != null) fail(e.toString());
|
|
|
+ }
|
|
|
+ if (eventually != null) eventually();
|
|
|
+ }`
|
|
|
+
|
|
|
tokensFileContent = `class Tokens {
|
|
|
/// 用于访问的token, 每次请求都必须带在Header里面
|
|
|
final String accessToken;
|
|
@@ -132,5 +223,41 @@ Future _apiRequest(String method, String path, dynamic data,
|
|
|
};
|
|
|
}
|
|
|
}
|
|
|
+`
|
|
|
+
|
|
|
+ tokensFileContentV2 = `class Tokens {
|
|
|
+ /// 用于访问的token, 每次请求都必须带在Header里面
|
|
|
+ final String accessToken;
|
|
|
+ final int accessExpire;
|
|
|
+
|
|
|
+ /// 用于刷新token
|
|
|
+ final String refreshToken;
|
|
|
+ final int refreshExpire;
|
|
|
+ final int refreshAfter;
|
|
|
+ Tokens({
|
|
|
+ required this.accessToken,
|
|
|
+ required this.accessExpire,
|
|
|
+ required this.refreshToken,
|
|
|
+ required this.refreshExpire,
|
|
|
+ required this.refreshAfter
|
|
|
+ });
|
|
|
+ factory Tokens.fromJson(Map<String, dynamic> m) {
|
|
|
+ return Tokens(
|
|
|
+ accessToken: m['access_token'],
|
|
|
+ accessExpire: m['access_expire'],
|
|
|
+ refreshToken: m['refresh_token'],
|
|
|
+ refreshExpire: m['refresh_expire'],
|
|
|
+ refreshAfter: m['refresh_after']);
|
|
|
+ }
|
|
|
+ Map<String, dynamic> toJson() {
|
|
|
+ return {
|
|
|
+ 'access_token': accessToken,
|
|
|
+ 'access_expire': accessExpire,
|
|
|
+ 'refresh_token': refreshToken,
|
|
|
+ 'refresh_expire': refreshExpire,
|
|
|
+ 'refresh_after': refreshAfter,
|
|
|
+ };
|
|
|
+ }
|
|
|
+}
|
|
|
`
|
|
|
)
|