Files
Tanami_App/lib/shared/api/network_api_services.dart

143 lines
4.4 KiB
Dart
Raw Normal View History

2024-05-24 19:32:53 +05:30
// common_api.dart
2024-07-25 19:19:25 +05:30
import 'dart:developer';
2024-05-24 19:32:53 +05:30
import 'package:dio/dio.dart';
2024-07-11 10:51:29 +05:30
import 'package:flutter/foundation.dart';
import '../../Api_Helper/base_manager.dart';
2024-07-25 19:19:25 +05:30
import '../../core/utils/secure/secure_storage_service.dart';
2024-05-24 19:32:53 +05:30
class NetworkApiService {
2024-07-26 16:54:11 +05:30
final SharedPreferenceLocalData secureStorageService =
SharedPreferenceLocalData();
2024-07-25 19:19:25 +05:30
2024-07-17 19:12:26 +05:30
final Dio _dio = Dio(BaseOptions(
validateStatus: (status) {
return status != null &&
2024-07-19 16:20:14 +05:30
status <= 500; // Allow any status code less than 500
2024-07-17 19:12:26 +05:30
},
));
2024-05-24 19:32:53 +05:30
// Common function for GET requests
2024-07-11 10:51:29 +05:30
Future<ResponseData> get(String url,
2024-05-24 19:32:53 +05:30
{Map<String, dynamic>? queryParameters}) async {
2024-07-25 19:19:25 +05:30
String token = await secureStorageService.read("accesstoken") ?? "";
2024-07-17 19:12:26 +05:30
if (kDebugMode) {
2024-07-11 10:51:29 +05:30
print("api url is >>> $url");
}
Response response;
2024-05-24 19:32:53 +05:30
try {
2024-07-25 19:19:25 +05:30
response = await _dio.get(url,
options: (token == "")
? Options()
2024-07-25 23:34:06 +05:30
: Options(
headers: {
"x-auth-token": token,
},
));
2024-07-11 10:51:29 +05:30
if (response.statusCode == 201 || response.statusCode == 200) {
return ResponseData<dynamic>("success", ResponseStatus.SUCCESS,
data: response.data);
2024-07-19 16:20:14 +05:30
} else if (response.statusCode == 500) {
return ResponseData<dynamic>(
"Internal server error", ResponseStatus.PRIVATE,
data: response.data);
} else if (response.statusCode == 400) {
return ResponseData<dynamic>(
response.data['message'], ResponseStatus.PRIVATE,
data: response.data);
2024-07-11 10:51:29 +05:30
} else {
try {
return ResponseData<dynamic>(
response.data['message'].toString(), ResponseStatus.FAILED);
} catch (_) {
return ResponseData<dynamic>(
data: response.data,
response.statusMessage!,
ResponseStatus.FAILED);
2024-07-17 19:12:26 +05:30
}
}
2024-05-24 19:32:53 +05:30
} catch (e) {
2024-07-11 10:51:29 +05:30
return ResponseData<dynamic>(
2024-07-17 19:12:26 +05:30
"Something went wrong", ResponseStatus.FAILED);
2024-05-24 19:32:53 +05:30
}
}
// Common function for POST requests
2024-07-11 19:36:40 +05:30
Future<ResponseData> post(String url, dynamic data) async {
2024-07-25 19:19:25 +05:30
String token = await secureStorageService.read("accesstoken") ?? "";
log(token);
2024-07-11 19:36:40 +05:30
if (kDebugMode) {
print("data >>> $data");
print("api url is >>> $url");
}
2024-05-24 19:32:53 +05:30
try {
2024-07-25 19:19:25 +05:30
var response = await _dio.post(url,
data: data,
options: (token == "")
? Options()
: Options(headers: {
"x-auth-token": token,
}));
2024-07-17 19:12:26 +05:30
if (response.statusCode == 201 || response.statusCode == 200) {
return ResponseData<dynamic>("success", ResponseStatus.SUCCESS,
2024-07-11 19:36:40 +05:30
data: response.data);
2024-07-17 19:12:26 +05:30
} else if (response.statusCode == 400) {
2024-07-25 19:19:25 +05:30
return ResponseData<dynamic>(
response.data['message'], ResponseStatus.PRIVATE,
data: response.data);
2024-07-18 18:51:01 +05:30
} else if (response.statusCode == 401) {
return ResponseData<dynamic>(
2024-07-25 19:19:25 +05:30
response.data['message'], ResponseStatus.PRIVATE,
2024-07-18 18:51:01 +05:30
data: response.data);
2024-07-19 16:20:14 +05:30
} else if (response.statusCode == 500) {
return ResponseData<dynamic>(
"Internal server error", ResponseStatus.PRIVATE,
data: response.data);
2024-07-17 19:12:26 +05:30
} else {
2024-07-11 19:36:40 +05:30
try {
return ResponseData<dynamic>(
2024-07-25 19:19:25 +05:30
response.data['message'].toString(), ResponseStatus.FAILED);
2024-07-11 19:36:40 +05:30
} catch (_) {
return ResponseData<dynamic>(
data: response.data,
response.statusMessage!,
ResponseStatus.FAILED);
2024-07-17 19:12:26 +05:30
}
}
2024-05-24 19:32:53 +05:30
} catch (e) {
2024-07-11 19:36:40 +05:30
return ResponseData<dynamic>(
2024-07-17 19:12:26 +05:30
"Oops something went wrong", ResponseStatus.FAILED);
2024-05-24 19:32:53 +05:30
}
}
// Common function for PUT requests
2024-07-10 17:34:49 +05:30
Future<Response> put(String url, dynamic data) async {
2024-05-24 19:32:53 +05:30
try {
2024-07-10 17:34:49 +05:30
return await _dio.put(url, data: data);
2024-05-24 19:32:53 +05:30
} catch (e) {
throw _handleError(e);
}
}
// Common function for DELETE requests
2024-07-10 17:34:49 +05:30
Future<Response> delete(String url) async {
2024-05-24 19:32:53 +05:30
try {
2024-07-10 17:34:49 +05:30
return await _dio.delete(url);
2024-05-24 19:32:53 +05:30
} catch (e) {
throw _handleError(e);
}
}
// Handle Dio errors
dynamic _handleError(dynamic e) {
if (e is DioException) {
// Handle Dio specific errors (e.g., DioErrorType.connectTimeout, DioErrorType.response)
return e.message; // Or return a custom error message
} else {
return 'An error occurred'; // Generic error message for other types of errors
}
}
}