TIF_E41211115_Genso_quiz_app/lib/data/providers/dio_client.dart

53 lines
1.2 KiB
Dart

import 'package:dio/dio.dart';
import 'package:get/get.dart';
import 'package:quiz_app/core/endpoint/api_endpoint.dart';
import 'package:quiz_app/core/utils/logger.dart';
class ApiClient extends GetxService {
late final Dio dio;
Future<ApiClient> init() async {
dio = Dio(BaseOptions(
baseUrl: APIEndpoint.baseUrl,
connectTimeout: const Duration(minutes: 3),
receiveTimeout: const Duration(minutes: 10),
headers: {
"Content-Type": "application/json",
},
));
dio.interceptors.add(
InterceptorsWrapper(
onRequest: (options, handler) {
logC.i('''
➡️ [REQUEST]
[${options.method}] ${options.uri}
Headers: ${options.headers}
Body: ${options.data}
''');
return handler.next(options);
},
onResponse: (response, handler) {
logC.i('''
✅ [RESPONSE]
[${response.statusCode}] ${response.requestOptions.uri}
Data: ${response.data}
''');
return handler.next(response);
},
onError: (DioException e, handler) {
logC.e('''
❌ [ERROR]
[${e.response?.statusCode}] ${e.requestOptions.uri}
Message: ${e.message}
Error Data: ${e.response?.data}
''');
return handler.next(e);
},
),
);
return this;
}
}