feature:完成测试连接token可用功能

This commit is contained in:
hackycy
2020-06-18 13:36:09 +08:00
parent 5d4a2e39f6
commit 2d48a3575b
5 changed files with 126 additions and 9 deletions

View File

@@ -0,0 +1,4 @@
/// table name keys
const String TABLE_NAME_PBSETTING = 'pb_setting';
const String TABLE_NAME_UPLOADED = 'uploaded';

67
lib/utils/github_net.dart Normal file
View File

@@ -0,0 +1,67 @@
import 'dart:async';
import 'dart:convert';
import 'package:dio/dio.dart';
import 'package:flutter_picgo/api/github_api.dart';
import 'package:flutter_picgo/model/github_config.dart';
import 'package:flutter_picgo/resources/pb_type_keys.dart';
import 'package:flutter_picgo/resources/table_name_keys.dart';
import 'package:flutter_picgo/utils/sql.dart';
Map<String, dynamic> optHeader = {
'accept-language': 'zh-cn',
'content-type': 'application/json'
};
var dio = new Dio(BaseOptions(
connectTimeout: 30000, headers: optHeader, baseUrl: GithubApi.BASE_URL));
class GithubNetUtils {
static Future get(String url, [Map<String, dynamic> params]) async {
// 拦截器
dio.interceptors.add(InterceptorsWrapper(
onRequest: (RequestOptions options) async {
var token = await oAuth();
options.headers["Authorization"] = 'Token $token';
},
));
Response response;
if (params != null) {
response = await dio.get(url, queryParameters: params);
} else {
response = await dio.get(url);
}
// if (response.statusCode != 200) {
// dio.reject(response.data["message"] ?? '未知异常');
// }
return response.data;
}
static Future post(String url, Map<String, dynamic> params) async {
dio.interceptors.add(InterceptorsWrapper(
onRequest: (RequestOptions options) async {
var token = await oAuth();
options.headers["Authorization"] = 'Token $token';
},
));
Response response = await dio.post(url, data: params);
return response.data;
}
/// 获取配置中的Token
static Future oAuth() async {
try {
var sql = Sql.setTable(TABLE_NAME_PBSETTING);
var pbsettingRow =
(await sql.getBySql('type = ?', [PBTypeKeys.github]))?.first;
if (pbsettingRow != null &&
pbsettingRow["config"] != null &&
pbsettingRow["config"] != '') {
GithubConfig config =
GithubConfig.fromJson(json.decode(pbsettingRow["config"]));
if (config != null && config.token != null && config.token != '') {
return config.token;
}
}
} catch (e) {}
}
}

View File

@@ -1,16 +1,42 @@
import 'dart:async';
// import 'dart:io';
// import 'package:dio/dio.dart';
import 'package:dio/dio.dart';
Map<String, dynamic> optHeader = {
'accept-language': 'zh-cn',
'content-type': 'application/json'
};
class NetUtil {
var dio = new Dio(BaseOptions(connectTimeout: 30000, headers: optHeader));
class NetUtils {
static Future get(String url, [Map<String, dynamic> params]) async {
var response;
// 设置代理 便于本地 charles 抓包
// (dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate =
// (HttpClient client) {
// client.findProxy = (uri) {
// return "PROXY 30.10.24.79:8889";
// };
// };
if (params != null) {
response = await dio.get(url, queryParameters: params);
} else {
response = await dio.get(url);
}
return response.data;
}
static Future post(String url, Map<String, dynamic> params) async {
// // 设置代理 便于本地 charles 抓包
// (dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate =
// (HttpClient client) {
// client.findProxy = (uri) {
// return "PROXY 30.10.24.79:8889";
// };
// };
var response = await dio.post(url, data: params);
return response.data;
}
}

View File

@@ -11,7 +11,6 @@ class GithubPage extends StatefulWidget {
}
class _GithubPageState extends State<GithubPage> implements GithubPageContract {
BuildContext _ctx;
GithubConfig _config;
GithubPagePresenter _presenter;
@@ -36,7 +35,6 @@ class _GithubPageState extends State<GithubPage> implements GithubPageContract {
@override
Widget build(BuildContext context) {
_ctx = context;
_repositoryNameController =
TextEditingController(text: _config?.repositoryName ?? '');
_branchNameController =
@@ -167,7 +165,9 @@ class _GithubPageState extends State<GithubPage> implements GithubPageContract {
}
void _testConfig() {
if (_formKey.currentState.validate()) {}
if (_formKey.currentState.validate()) {
_presenter.doTestConfig();
}
}
void _saveConfig() {
@@ -210,4 +210,9 @@ class _GithubPageState extends State<GithubPage> implements GithubPageContract {
showError(String errorMsg) {
Toast.show(errorMsg, context, duration: Toast.LENGTH_LONG, gravity: Toast.BOTTOM);
}
@override
testConfigSuccess() {
Toast.show("测试成功", context, duration: Toast.LENGTH_SHORT, gravity: Toast.BOTTOM);
}
}

View File

@@ -1,6 +1,9 @@
import 'dart:convert';
import 'package:flutter_picgo/api/github_api.dart';
import 'package:flutter_picgo/model/github_config.dart';
import 'package:flutter_picgo/resources/pb_type_keys.dart';
import 'package:flutter_picgo/resources/table_name_keys.dart';
import 'package:flutter_picgo/utils/github_net.dart';
import 'package:flutter_picgo/utils/sql.dart';
abstract class GithubPageContract {
@@ -8,6 +11,8 @@ abstract class GithubPageContract {
saveConfigSuccess();
testConfigSuccess();
showError(String errorMsg);
}
@@ -18,7 +23,7 @@ class GithubPagePresenter {
doLoadConfig() async {
try {
var sql = Sql.setTable('pb_setting');
var sql = Sql.setTable(TABLE_NAME_PBSETTING);
var pbsettingRow = (await sql.getBySql('type = ?', [PBTypeKeys.github]))?.first;
if (pbsettingRow != null &&
pbsettingRow["config"] != null && pbsettingRow["config"] != '') {
@@ -34,7 +39,7 @@ class GithubPagePresenter {
if (config != null) {
try {
String jsondata = json.encode(config);
var sql = Sql.setTable('pb_setting');
var sql = Sql.setTable(TABLE_NAME_PBSETTING);
int raw = await sql
.rawUpdate('config = ? WHERE type = ?', [jsondata, PBTypeKeys.github]);
if (raw == 1) {
@@ -47,4 +52,14 @@ class GithubPagePresenter {
}
}
}
doTestConfig() async {
try {
await GithubNetUtils.get(GithubApi.BASE_URL);
_view.testConfigSuccess();
} catch (e) {
_view.showError('$e');
}
}
}