import 'dart:convert'; import 'package:http/http.dart' as http; import '../database/daos/parametri_dao.dart'; import '../core/constants.dart'; class ApiService { final ParametriDao _parametriDao; ApiService(this._parametriDao); String? token; Future getBaseUrl() async { final url = await _parametriDao.read(AppConstants.kUrlParam); return url ?? ''; } Future> get(String path, {Map? queryParams}) async { final base = await getBaseUrl(); final uri = Uri.parse('$base$path').replace(queryParameters: queryParams); final response = await http.get(uri, headers: _headers).timeout(const Duration(minutes: 2)); return jsonDecode(response.body) as Map; } Future> getList(String path, {Map? queryParams}) async { final base = await getBaseUrl(); final uri = Uri.parse('$base$path').replace(queryParameters: queryParams); final response = await http.get(uri, headers: _headers).timeout(const Duration(minutes: 2)); return jsonDecode(response.body) as List; } Future getString(String path) async { final base = await getBaseUrl(); final uri = Uri.parse('$base$path'); final response = await http.get(uri, headers: _headers).timeout(const Duration(minutes: 2)); return response.body; } Future> post(String path, Map body) async { final base = await getBaseUrl(); final uri = Uri.parse('$base$path'); final response = await http.post( uri, headers: _headers, body: jsonEncode(body), ).timeout(const Duration(minutes: 5)); return jsonDecode(response.body) as Map; } Future> postRaw(String path, String body) async { final base = await getBaseUrl(); final uri = Uri.parse('$base$path'); final response = await http.post( uri, headers: _headers, body: body, ).timeout(const Duration(minutes: 5)); return jsonDecode(response.body) as Map; } Map get _headers { final headers = { 'Content-Type': 'application/json', 'Accept': 'application/json', }; final t = token; if (t != null && t.isNotEmpty) { headers['Authorization'] = 'Bearer $t'; } return headers; } }