| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- import 'dart:io';
- import 'package:bot_toast/bot_toast.dart';
- import 'package:dio/dio.dart';
- import 'package:dio/adapter.dart';
- import '../utils/index.dart';
- import '../models/index.dart';
- class Request {
- static Dio _dio;
- // init network
- static void init() {
- _dio = Dio(BaseOptions(
- sendTimeout: 15000,
- receiveTimeout: 15000,
- connectTimeout: 15000,
- // baseUrl: "http://twong.h/api/",
- baseUrl: "https://twong.shotshock.shop/api/",
- headers: {}));
- (_dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate =
- (client) {
- client.badCertificateCallback =
- (X509Certificate cert, String host, int port) {
- return true;
- };
- };
- updateToken();
- }
- // update token
- static void updateToken() {
- var token = Cache.token;
- if(token == null) {
- Request.setHeader("Authori-zation", null);
- } else {
- Request.setHeader("Authori-zation", "Bearer ${token?.token}");
- }
- }
- // set http header
- static void setHeader(String key, String value) {
- _dio.options.headers[key] = value;
- }
- // http get request with full url
- static Future<Response> getWithUrl(String url, {Map<String, dynamic> params}) async {
- return Dio().get(url, queryParameters: params);
- }
- // http post request with full url
- static Future<Response> postWithUrl(String url, {Map<String, dynamic> params}) async {
- return Dio().post(url, queryParameters: params);
- }
- // get remote version
- static Future<Version> getVersion() async {
- var response = await getWithUrl("https://qndownload.shotshock.shop/version?ts=${DateTime.now().millisecondsSinceEpoch}");
- var version = Version.fromJson(response.data);
- return version;
- }
- // base HTTP GET
- static Future<dynamic> get(String uri, {Map<String, dynamic> params}) async {
- try {
- Log.i("GET | $uri " + (params == null ? "" : params.toString()));
- var response = await _dio.get(uri, queryParameters: params);
- // var response = await compute(_request, RequestData(_dio, "GET", uri, data: params));
- var data = Resp.fromJson(response.data);
- return Future.value(process(data));
- } on DioError catch (err) {
- Log.e("DioError: $err URL: ${_dio.options.baseUrl}$uri");
- throw NetError("网络错误!");
- }
- }
- // base HTTP POST
- static Future<dynamic> post (String uri, {Map<String, dynamic> params}) async {
- try {
- Log.i("POST | $uri " + (params == null ? "" : params.toString()));
- var response = await _dio.post(uri, queryParameters: params);
- // var response = await compute(_request, RequestData(_dio, "POST", uri, data: params));
- var data = Resp.fromJson(response.data);
- return Future.value(process(data));
- } on DioError catch (err) {
- Log.e("DioError: $err URL: ${_dio.options.baseUrl}$uri");
- throw NetError("网络错误!");
- }
- }
- // process http response data
- static dynamic process(Resp response) {
- Log.i("rsp | ${response.msg} ${response.status}");
- if([410000, 410001, 410002].contains(response.status)) {
- Utils.toLogin();
- BotToast.showText(text: response.msg);
- throw NetError(response.msg);
- }
- if (response.status != 200) {
- Log.e("response ${response.toJson()}}");
- BotToast.showText(text: response.msg);
- throw NetError(response.msg);
- }
- return response.data;
- }
- }
|