together_mobile/lib/request/server.dart

54 lines
1.6 KiB
Dart
Raw Normal View History

2023-07-04 11:51:11 +08:00
import 'package:dio/dio.dart';
2024-04-11 17:27:45 +08:00
import 'package:flutter_dotenv/flutter_dotenv.dart';
2023-07-04 11:51:11 +08:00
2024-04-09 17:23:28 +08:00
import '/models/init_get_it.dart';
import '/models/token_model.dart';
2024-04-11 17:27:45 +08:00
final baseUrl = dotenv.env['SERVER_HOST'];
final userAvatarsUrl = '$baseUrl/static/avatars/user';
final groupChatAvatarsUrl = '$baseUrl/static/avatars/group_chat';
2023-07-04 11:51:11 +08:00
final baseOptions = BaseOptions(
2024-04-11 17:27:45 +08:00
baseUrl: baseUrl!,
2023-07-04 11:51:11 +08:00
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
);
var request = Dio(baseOptions)
..interceptors.add(
InterceptorsWrapper(
2024-04-11 17:27:45 +08:00
onRequest: (
RequestOptions options,
RequestInterceptorHandler handler,
) async {
if (getIt.get<Token>().token != '') {
options.headers['Authorization'] =
'Bearer ${getIt.get<Token>().token}';
}
2023-07-04 11:51:11 +08:00
return handler.next(options);
},
onResponse: (Response response, ResponseInterceptorHandler handler) {
if (response.statusCode! >= 200 && response.statusCode! < 400) {
if (response.headers.value('Authorization') != null) {
// update token
getIt
.get<Token>()
.updateToken(response.headers.value('Authorization')!);
}
2023-07-04 11:51:11 +08:00
return handler.resolve(response);
} else {
handler.reject(
DioException.badResponse(
statusCode: response.statusCode!,
requestOptions: RequestOptions(),
response: response,
),
);
}
},
onError: (DioException e, ErrorInterceptorHandler handler) {
handler.reject(e);
},
),
);