| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- 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<String> getBaseUrl() async {
- final url = await _parametriDao.read(AppConstants.kUrlParam);
- return url ?? '';
- }
- Future<Map<String, dynamic>> get(String path, {Map<String, String>? 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<String, dynamic>;
- }
- Future<List<dynamic>> getList(String path, {Map<String, String>? 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<dynamic>;
- }
- Future<String> 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<Map<String, dynamic>> post(String path, Map<String, dynamic> 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<String, dynamic>;
- }
- Future<Map<String, dynamic>> 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<String, dynamic>;
- }
- Map<String, String> get _headers {
- final headers = <String, String>{
- 'Content-Type': 'application/json',
- 'Accept': 'application/json',
- };
- final t = token;
- if (t != null && t.isNotEmpty) {
- headers['Authorization'] = 'Bearer $t';
- }
- return headers;
- }
- }
|