Files
2026-06-11 23:48:26 +02:00

86 lines
2.2 KiB
Dart

import 'package:dio/dio.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:logger/logger.dart';
import 'package:shared_preferences/shared_preferences.dart';
var logger = Logger(printer: PrettyPrinter());
class Http {
final Dio dio = Dio();
final String baseUrl = dotenv.env['BASE_URL'] ?? '';
Http() {
dio.options.baseUrl = baseUrl;
// dio.options.connectTimeout = const Duration(seconds: 120);
// dio.options.receiveTimeout = const Duration(seconds: 120);
// dio.options.sendTimeout = const Duration(seconds: 120);
dio.interceptors.add(
LogInterceptor(
request: true,
responseBody: false,
requestBody: true,
error: true,
),
);
}
Future<Map<String, String>> getHeaders() async {
Map<String, String> headers = {'Content-Type': 'application/json'};
var prefs = await SharedPreferences.getInstance();
String token = prefs.getString("token") ?? "";
headers['Authorization'] = 'Bearer $token';
return headers;
}
Future<dynamic> get(String url) async {
Map<String, String> headers = await getHeaders();
Response response;
response = await dio.get(baseUrl + url, options: Options(headers: headers));
logger.i(response.data.toString());
return response.data;
}
Future<dynamic> post(String url, dynamic data) async {
Map<String, String> headers = {'Content-Type': 'application/json'};
Response response;
response = await dio.post(
baseUrl + url,
data: data,
options: Options(headers: headers),
);
logger.i(response.data.toString());
return response.data;
}
Future<dynamic> put(String url, dynamic data) async {
Map<String, String> headers = await getHeaders();
Response response;
response = await dio.put(
baseUrl + url,
data: data,
options: Options(headers: headers),
);
logger.i(response.data.toString());
return response.data;
}
Future<dynamic> delete(String url) async {
Map<String, String> headers = await getHeaders();
Response response;
response = await dio.delete(
baseUrl + url,
options: Options(headers: headers),
);
logger.i(response.data.toString());
return response.data;
}
}