api_service.dart 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import 'dart:convert';
  2. import 'package:http/http.dart' as http;
  3. import '../database/daos/parametri_dao.dart';
  4. import '../core/constants.dart';
  5. class ApiService {
  6. final ParametriDao _parametriDao;
  7. ApiService(this._parametriDao);
  8. String? token;
  9. Future<String> getBaseUrl() async {
  10. final url = await _parametriDao.read(AppConstants.kUrlParam);
  11. return url ?? '';
  12. }
  13. Future<Map<String, dynamic>> get(String path, {Map<String, String>? queryParams}) async {
  14. final base = await getBaseUrl();
  15. final uri = Uri.parse('$base$path').replace(queryParameters: queryParams);
  16. final response = await http.get(uri, headers: _headers).timeout(const Duration(minutes: 2));
  17. return jsonDecode(response.body) as Map<String, dynamic>;
  18. }
  19. Future<List<dynamic>> getList(String path, {Map<String, String>? queryParams}) async {
  20. final base = await getBaseUrl();
  21. final uri = Uri.parse('$base$path').replace(queryParameters: queryParams);
  22. final response = await http.get(uri, headers: _headers).timeout(const Duration(minutes: 2));
  23. return jsonDecode(response.body) as List<dynamic>;
  24. }
  25. Future<String> getString(String path) async {
  26. final base = await getBaseUrl();
  27. final uri = Uri.parse('$base$path');
  28. final response = await http.get(uri, headers: _headers).timeout(const Duration(minutes: 2));
  29. return response.body;
  30. }
  31. Future<Map<String, dynamic>> post(String path, Map<String, dynamic> body) async {
  32. final base = await getBaseUrl();
  33. final uri = Uri.parse('$base$path');
  34. final response = await http.post(
  35. uri,
  36. headers: _headers,
  37. body: jsonEncode(body),
  38. ).timeout(const Duration(minutes: 5));
  39. return jsonDecode(response.body) as Map<String, dynamic>;
  40. }
  41. Future<Map<String, dynamic>> postRaw(String path, String body) async {
  42. final base = await getBaseUrl();
  43. final uri = Uri.parse('$base$path');
  44. final response = await http.post(
  45. uri,
  46. headers: _headers,
  47. body: body,
  48. ).timeout(const Duration(minutes: 5));
  49. return jsonDecode(response.body) as Map<String, dynamic>;
  50. }
  51. Map<String, String> get _headers {
  52. final headers = <String, String>{
  53. 'Content-Type': 'application/json',
  54. 'Accept': 'application/json',
  55. };
  56. final t = token;
  57. if (t != null && t.isNotEmpty) {
  58. headers['Authorization'] = 'Bearer $t';
  59. }
  60. return headers;
  61. }
  62. }