2025-12-14 21:03:11 +01:00
|
|
|
/// Utility class for parsing Plex API cache responses
|
|
|
|
|
///
|
|
|
|
|
/// Provides consistent extraction of MediaContainer data across the codebase.
|
|
|
|
|
class PlexCacheParser {
|
|
|
|
|
PlexCacheParser._();
|
|
|
|
|
|
2026-05-12 21:23:19 +02:00
|
|
|
static Map<String, dynamic>? extractMediaContainer(Map<String, dynamic>? cached) {
|
|
|
|
|
final container = cached?['MediaContainer'];
|
|
|
|
|
return container is Map<String, dynamic> ? container : null;
|
|
|
|
|
}
|
|
|
|
|
|
2025-12-14 21:03:11 +01:00
|
|
|
static List<dynamic>? extractMetadataList(Map<String, dynamic>? cached) {
|
2026-05-12 21:23:19 +02:00
|
|
|
return extractMediaContainer(cached)?['Metadata'] as List?;
|
2025-12-14 21:03:11 +01:00
|
|
|
}
|
|
|
|
|
|
2025-12-15 02:29:03 +01:00
|
|
|
static Map<String, dynamic>? extractFirstMetadata(Map<String, dynamic>? cached) {
|
2025-12-14 21:03:11 +01:00
|
|
|
final list = extractMetadataList(cached);
|
|
|
|
|
if (list == null || list.isEmpty) return null;
|
2026-02-15 03:14:04 +01:00
|
|
|
return list.first as Map<String, dynamic>;
|
2025-12-14 21:03:11 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static List<dynamic>? extractChapters(Map<String, dynamic>? cached) {
|
|
|
|
|
final metadata = extractFirstMetadata(cached);
|
|
|
|
|
if (metadata == null) return null;
|
|
|
|
|
return metadata['Chapter'] as List?;
|
|
|
|
|
}
|
|
|
|
|
}
|