119 lines
2.6 KiB
Dart
119 lines
2.6 KiB
Dart
import 'package:dio/dio.dart';
|
|
import 'package:get/get_instance/get_instance.dart';
|
|
import 'package:get/state_manager.dart';
|
|
import 'package:Ulak/services/storage_service.dart';
|
|
|
|
abstract class ApiConstants {
|
|
static const baseUrl = "http://192.168.1.27";
|
|
}
|
|
|
|
class ApiServices extends GetxService {
|
|
late StorageService _storageService;
|
|
late Dio _dio;
|
|
|
|
Future<ApiServices> init() async {
|
|
_storageService = Get.find<StorageService>();
|
|
_dio = Dio(
|
|
BaseOptions(
|
|
baseUrl: ApiConstants.baseUrl,
|
|
connectTimeout: Duration(seconds: 10),
|
|
receiveTimeout: Duration(seconds: 10),
|
|
contentType: "application/json",
|
|
),
|
|
);
|
|
|
|
_dio.interceptors.add(
|
|
InterceptorsWrapper(
|
|
onRequest: (options, handler) async {
|
|
final token = _storageService.getValue<String>(StorageKeys.userToken);
|
|
if (token != null) {
|
|
options.headers['Authorization'] = 'Berear $token';
|
|
}
|
|
return handler.next(options);
|
|
},
|
|
onError: (error, handler) async {
|
|
if (error.response?.statusCode == 401) {
|
|
await _storageService.remove(StorageKeys.userToken);
|
|
}
|
|
return handler.next(error);
|
|
},
|
|
),
|
|
);
|
|
return this;
|
|
}
|
|
|
|
Future<Response> get(
|
|
String path, {
|
|
Map<String, dynamic>? queryParameters,
|
|
Options? options,
|
|
}) async {
|
|
try {
|
|
return await _dio.get(
|
|
path,
|
|
queryParameters: queryParameters,
|
|
options: options,
|
|
);
|
|
} catch (e) {
|
|
print("Dio get error $e");
|
|
rethrow;
|
|
}
|
|
}
|
|
|
|
Future<Response> post(
|
|
String path, {
|
|
dynamic data,
|
|
Map<String, dynamic>? queryParameters,
|
|
Options? options,
|
|
}) async {
|
|
try {
|
|
return await _dio.post(
|
|
path,
|
|
data: data,
|
|
queryParameters: queryParameters,
|
|
options: options,
|
|
);
|
|
} catch (e) {
|
|
print("Dio post error $e");
|
|
rethrow;
|
|
}
|
|
}
|
|
|
|
Future<Response> put(
|
|
String path, {
|
|
dynamic data,
|
|
Map<String, dynamic>? queryParameters,
|
|
Options? options,
|
|
}) async {
|
|
try {
|
|
return await _dio.put(
|
|
path,
|
|
data: data,
|
|
queryParameters: queryParameters,
|
|
options: options,
|
|
);
|
|
} catch (e) {
|
|
print("Dio put error $e");
|
|
rethrow;
|
|
}
|
|
}
|
|
|
|
Future<Response> delete(
|
|
String path, {
|
|
dynamic data,
|
|
Map<String, dynamic>? queryParameters,
|
|
Options? options,
|
|
}) async {
|
|
try {
|
|
return await _dio.get(
|
|
path,
|
|
data: data,
|
|
queryParameters: queryParameters,
|
|
options: options,
|
|
);
|
|
} catch (e) {
|
|
print("Dio delete error $e");
|
|
rethrow;
|
|
}
|
|
}
|
|
}
|