49 lines
1.3 KiB
Dart
49 lines
1.3 KiB
Dart
import 'dart:io';
|
|
|
|
import 'package:alice/alice.dart';
|
|
import 'package:dio/dio.dart';
|
|
import 'package:fk_user_agent/fk_user_agent.dart';
|
|
import 'package:flutter/foundation.dart';
|
|
import 'package:package_info_plus/package_info_plus.dart';
|
|
import 'package:uuid/uuid.dart';
|
|
|
|
int kConnectTimeout = 15000;
|
|
|
|
class Network {
|
|
Dio _dio;
|
|
Alice _alice;
|
|
|
|
Future<void> init() async {
|
|
_alice = Alice(darkTheme: true, showNotification: kDebugMode);
|
|
await FkUserAgent.init();
|
|
final packageInfo = await PackageInfo.fromPlatform();
|
|
_dio = Dio(
|
|
BaseOptions(
|
|
connectTimeout: kConnectTimeout,
|
|
headers: {
|
|
HttpHeaders.userAgentHeader: FkUserAgent.userAgent,
|
|
'X-Client-Version': packageInfo.version,
|
|
'X-Client-Package': packageInfo.packageName,
|
|
},
|
|
),
|
|
);
|
|
_dio.interceptors.add(RequestIdInterceptor());
|
|
_dio.interceptors.add(_alice.getDioInterceptor());
|
|
}
|
|
|
|
Network._privateConstructor();
|
|
|
|
static Network instance = Network._privateConstructor();
|
|
|
|
Dio getDio() => _dio;
|
|
|
|
Alice getAlice() => _alice;
|
|
}
|
|
|
|
class RequestIdInterceptor extends Interceptor {
|
|
@override
|
|
void onRequest(RequestOptions options, RequestInterceptorHandler handler) {
|
|
options.headers.putIfAbsent("x-request-id", () => Uuid().v4().toString());
|
|
return super.onRequest(options, handler);
|
|
}
|
|
}
|