54 lines
1.6 KiB
Dart
54 lines
1.6 KiB
Dart
import 'package:dio/dio.dart';
|
|
import 'package:flutter_dotenv/flutter_dotenv.dart';
|
|
|
|
import '/models/init_get_it.dart';
|
|
import '/models/token_model.dart';
|
|
|
|
final baseUrl = dotenv.env['SERVER_HOST'];
|
|
final userAvatarsUrl = '$baseUrl/static/avatars/user';
|
|
final groupChatAvatarsUrl = '$baseUrl/static/avatars/group_chat';
|
|
|
|
final baseOptions = BaseOptions(
|
|
baseUrl: baseUrl!,
|
|
connectTimeout: const Duration(seconds: 5),
|
|
receiveTimeout: const Duration(seconds: 5),
|
|
);
|
|
|
|
var request = Dio(baseOptions)
|
|
..interceptors.add(
|
|
InterceptorsWrapper(
|
|
onRequest: (
|
|
RequestOptions options,
|
|
RequestInterceptorHandler handler,
|
|
) async {
|
|
if (getIt.get<Token>().token != '') {
|
|
options.headers['Authorization'] =
|
|
'Bearer ${getIt.get<Token>().token}';
|
|
}
|
|
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')!);
|
|
}
|
|
return handler.resolve(response);
|
|
} else {
|
|
handler.reject(
|
|
DioException.badResponse(
|
|
statusCode: response.statusCode!,
|
|
requestOptions: RequestOptions(),
|
|
response: response,
|
|
),
|
|
);
|
|
}
|
|
},
|
|
onError: (DioException e, ErrorInterceptorHandler handler) {
|
|
handler.reject(e);
|
|
},
|
|
),
|
|
);
|