import 'package:dio/dio.dart'; import '../../core/constants/app_constants.dart'; import '../../core/errors/exceptions.dart'; import '../../domain/entities/biblioteca.dart'; import '../../domain/entities/etiqueta.dart'; class BibliotecaApi { final Dio _dio; BibliotecaApi() : _dio = Dio() { _dio.options.connectTimeout = AppConstants.httpTimeout; _dio.options.receiveTimeout = AppConstants.httpTimeout; } Future> fetchEtiquetas(Biblioteca biblioteca) async { try { final response = await _dio.get(biblioteca.fullUrl); final data = response.data as Map; final results = data['results'] as List; return results .map((e) => Etiqueta.fromJson(e as Map)) .toList(); } on DioException catch (e) { throw NetworkException(e.message ?? 'Failed to fetch etiquetas'); } } Future resolveHash(String hash, Biblioteca biblioteca) async { try { final response = await _dio.get( biblioteca.fullUrl, queryParameters: {'hash': hash}, ); final data = response.data as Map; final results = data['results'] as List; if (results.isEmpty) return null; return Etiqueta.fromJson(results.first as Map); } on DioException { return null; } } }