Libro.fromGoogleBooksJson constructor

Libro.fromGoogleBooksJson(
  1. Map<String, dynamic> json
)

Crea un oggetto Libro partendo da un JSON proveniente dalla Google Books API.

Implementation

factory Libro.fromGoogleBooksJson(Map<String, dynamic> json) {
  final volumeInfo = json['volumeInfo'] as Map<String, dynamic>?;
  final imageLinks = volumeInfo?['imageLinks'] as Map<String, dynamic>?;
  final List<dynamic>? categories =
      volumeInfo?['categories'] as List<dynamic>?;
  GenereLibro? genere;

  if (categories != null && categories.isNotEmpty) {
    final categorieDaControllare =
        categories.take(3).map((c) => c.toString().toLowerCase()).toList();
    for (final categoria in categorieDaControllare) {
      genere = _mapCategoriaToGenere(categoria);
      if (genere != null) {
        break;
      }
    }
  }

  return Libro(
    titolo: volumeInfo?['title'] as String? ?? 'Titolo Sconosciuto',
    genere: genere,
    autori: _parseAuthors(volumeInfo),
    numeroPagine: volumeInfo?['pageCount'] as int?,
    lingua: volumeInfo?['language'] as String?,
    trama: volumeInfo?['description'] as String?,
    publisher: volumeInfo?['publisher'] as String?,
    isbn: _parseIsbn(volumeInfo),
    dataPubblicazione: _parsePublishedDate(volumeInfo),
    voto: null,
    note: null,
    stato: null,
    copertina: imageLinks?['thumbnail'] as String?,
  );
}