forked from lxm_tools/flutter-picgo
feature:完成测试连接token可用功能
This commit is contained in:
4
lib/resources/table_name_keys.dart
Normal file
4
lib/resources/table_name_keys.dart
Normal 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
67
lib/utils/github_net.dart
Normal 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) {}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user