Files
packet/lib/data/datasources/biblioteca_api.dart

43 lines
1.4 KiB
Dart
Raw Permalink Normal View History

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<List<Etiqueta>> fetchEtiquetas(Biblioteca biblioteca) async {
try {
final response = await _dio.get(biblioteca.fullUrl);
final data = response.data as Map<String, dynamic>;
final results = data['results'] as List<dynamic>;
return results
.map((e) => Etiqueta.fromJson(e as Map<String, dynamic>))
.toList();
} on DioException catch (e) {
throw NetworkException(e.message ?? 'Failed to fetch etiquetas');
}
}
Future<Etiqueta?> resolveHash(String hash, Biblioteca biblioteca) async {
try {
final response = await _dio.get(
biblioteca.fullUrl,
queryParameters: {'hash': hash},
);
final data = response.data as Map<String, dynamic>;
final results = data['results'] as List<dynamic>;
if (results.isEmpty) return null;
return Etiqueta.fromJson(results.first as Map<String, dynamic>);
} on DioException {
return null;
}
}
}