diff --git a/lib/api/github_api.dart b/lib/api/github_api.dart index 5d0b7b5..c429319 100644 --- a/lib/api/github_api.dart +++ b/lib/api/github_api.dart @@ -44,7 +44,7 @@ class GithubApi { String configStr = await ImageUploadUtils.getPBConfig(PBTypeKeys.github); if (!isBlank(configStr)) { GithubConfig config = GithubConfig.fromJson(json.decode(configStr)); - if (config != null && config.token != null && config.token != '') { + if (config != null && !isBlank(config.token)) { return Options(headers: {"Authorization": 'Token ${config.token}'}); } } diff --git a/lib/api/smms_api.dart b/lib/api/smms_api.dart index bfe9149..5266e59 100644 --- a/lib/api/smms_api.dart +++ b/lib/api/smms_api.dart @@ -1,11 +1,46 @@ -class SMMSApi { +import 'dart:convert'; +import 'package:dio/dio.dart'; +import 'package:flutter_picgo/model/smms_config.dart'; +import 'package:flutter_picgo/resources/pb_type_keys.dart'; +import 'package:flutter_picgo/utils/image_upload.dart'; +import 'package:flutter_picgo/utils/net.dart'; +import 'package:flutter_picgo/utils/strings.dart'; + +class SMMSApi { static const String BASE_URL = 'https://sm.ms/api/v2/'; - static const String GET_PROFILE = 'profile'; + static Future getProfile() async { + var op = await oAuth(); + Response res = await NetUtils.getInstance().post(BASE_URL + 'profile', options: op); + return res.data; + } - static const String UPLOAD = 'upload'; + static Future upload(FormData formData) async { + var op = await oAuth(); + Response res = await NetUtils.getInstance().post(BASE_URL + 'upload', data: formData, options: op); + return res.data; + } - static const String DELETE = 'delete'; + static Future delete(String hash) async { + var op = await oAuth(); + Response res = await NetUtils.getInstance().post(BASE_URL + 'delete/' + hash ?? '', options: op); + return res.data; + } -} \ No newline at end of file + /// 获取配置中的Token + static Future oAuth() async { + try { + String configStr = await ImageUploadUtils.getPBConfig(PBTypeKeys.smms); + if (!isBlank(configStr)) { + SMMSConfig config = SMMSConfig.fromJson(json.decode(configStr)); + if (config != null && !isBlank(config.token)) { + return Options(headers: {"Authorization": '${config.token}'}); + } + } + return null; + } catch (e) { + return null; + } + } +} diff --git a/lib/utils/smms_net.dart b/lib/utils/smms_net.dart deleted file mode 100644 index dee7118..0000000 --- a/lib/utils/smms_net.dart +++ /dev/null @@ -1,112 +0,0 @@ -import 'dart:async'; -import 'dart:convert'; -import 'package:dio/dio.dart'; -import 'package:flutter_picgo/api/smms_api.dart'; -import 'package:flutter_picgo/model/smms_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 optHeader = { - // 'accept-language': 'zh-cn', - // 'content-type': 'application/json' -}; - -var dio = new Dio(BaseOptions( - connectTimeout: 30000, - receiveTimeout: 30000, - sendTimeout: 30000, - headers: optHeader, - baseUrl: SMMSApi.BASE_URL)); - -class SMMSNetUtils { - static Future get(String url, {Map params}) async { - // 拦截器 - dio.interceptors.add(InterceptorsWrapper( - onRequest: (RequestOptions options) async { - var token = await oAuth(); - options.headers["Authorization"] = '$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 data) async { - dio.interceptors.add(InterceptorsWrapper( - onRequest: (RequestOptions options) async { - var token = await oAuth(); - options.headers["Authorization"] = '$token'; - }, - )); - Response response = await dio.post(url, data: data); - return response.data; - } - - static Future postForm(String url, FormData data) async { - dio.interceptors.add(InterceptorsWrapper( - onRequest: (RequestOptions options) async { - var token = await oAuth(); - options.headers["Authorization"] = '$token'; - }, - )); - Response response = await dio.post(url, data: data); - return response.data; - } - - static Future put(String url, Map data) async { - dio.interceptors.add(InterceptorsWrapper( - onRequest: (RequestOptions options) async { - var token = await oAuth(); - options.headers["Authorization"] = '$token'; - }, - )); - if (!inProduction) { - dio.interceptors.add(LogInterceptor()); - } - Response response = await dio.put(url, data: data); - return response.data; - } - - static Future delete(String url, Map data) async { - dio.interceptors.add(InterceptorsWrapper( - onRequest: (RequestOptions options) async { - var token = await oAuth(); - options.headers["Authorization"] = '$token'; - }, - )); - if (!inProduction) { - dio.interceptors.add(LogInterceptor()); - } - Response response = await dio.delete(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.smms]))?.first; - if (pbsettingRow != null && - pbsettingRow["config"] != null && - pbsettingRow["config"] != '') { - SMMSConfig config = - SMMSConfig.fromJson(json.decode(pbsettingRow["config"])); - if (config != null && config.token != null && config.token != '') { - return config.token; - } - } - } catch (e) {} - } -} diff --git a/lib/utils/strategy/impl/smms_image_upload.dart b/lib/utils/strategy/impl/smms_image_upload.dart index c6c3060..883374e 100644 --- a/lib/utils/strategy/impl/smms_image_upload.dart +++ b/lib/utils/strategy/impl/smms_image_upload.dart @@ -4,7 +4,6 @@ import 'package:flutter_picgo/api/smms_api.dart'; import 'package:flutter_picgo/model/uploaded.dart'; import 'package:flutter_picgo/resources/pb_type_keys.dart'; import 'package:flutter_picgo/utils/image_upload.dart'; -import 'package:flutter_picgo/utils/smms_net.dart'; import 'dart:io'; import 'package:path/path.dart' as path; import 'package:flutter_picgo/utils/strategy/image_upload_strategy.dart'; @@ -16,7 +15,7 @@ class SMMSImageUpload implements ImageUploadStrategy { FormData formData = FormData.fromMap({ "smfile": await MultipartFile.fromFile(file.path, filename: renameImage), }); - var result = await SMMSNetUtils.postForm(SMMSApi.UPLOAD, formData); + var result = await SMMSApi.upload(formData); var resultmap = json.decode(result); if (resultmap["success"]) { var uploaded = Uploaded(-1, resultmap["data"]["url"], PBTypeKeys.smms, @@ -32,8 +31,7 @@ class SMMSImageUpload implements ImageUploadStrategy { Future delete(Uploaded uploaded) async { String hash = await ImageUploadUtils.getUploadedItemInfo(uploaded.id); if (!isBlank(hash)) { - String realUrl = path.joinAll([SMMSApi.DELETE, hash]); - var result = await SMMSNetUtils.get(realUrl); + var result = await SMMSApi.delete(hash); var resultmap = json.decode(result); if (resultmap["success"]) { return uploaded; diff --git a/lib/views/pb_setting_page/smms_page/smms_page_presenter.dart b/lib/views/pb_setting_page/smms_page/smms_page_presenter.dart index eee3347..b690287 100644 --- a/lib/views/pb_setting_page/smms_page/smms_page_presenter.dart +++ b/lib/views/pb_setting_page/smms_page/smms_page_presenter.dart @@ -4,7 +4,6 @@ import 'package:flutter_picgo/api/smms_api.dart'; import 'package:flutter_picgo/model/smms_config.dart'; import 'package:flutter_picgo/resources/pb_type_keys.dart'; import 'package:flutter_picgo/utils/image_upload.dart'; -import 'package:flutter_picgo/utils/smms_net.dart'; abstract class SMMSPageContract { loadConfigSuccess(SMMSConfig config); @@ -53,7 +52,7 @@ class SMMSPagePresenter { doTestConfig() async { try { - var result = json.decode((await SMMSNetUtils.post(SMMSApi.GET_PROFILE, null))); + var result = json.decode((await SMMSApi.getProfile())); if (result["success"]) { _view.testConfigSuccess(result["data"]["username"]); } else {