Files
flutter-picgo/lib/utils/github_net.dart
2020-06-21 00:41:00 +08:00

88 lines
2.7 KiB
Dart

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';
const bool inProduction = const bool.fromEnvironment("dart.vm.product");
Map<String, dynamic> optHeader = {
'accept-language': 'zh-cn',
'content-type': 'application/json'
};
var dio = new Dio(BaseOptions(
connectTimeout: 30000,
receiveTimeout: 30000,
sendTimeout: 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> data) 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: data);
return response.data;
}
static Future put(String url, Map<String, dynamic> data) async {
dio.interceptors.add(InterceptorsWrapper(
onRequest: (RequestOptions options) async {
var token = await oAuth();
options.headers["Authorization"] = 'Token $token';
},
));
if (!inProduction) {
dio.interceptors.add(LogInterceptor());
}
Response response = await dio.put(url, data: data);
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) {}
}
}