Ulak/lib/services/api_services.dart
2026-04-07 09:52:29 +03:00

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;
}
}
}