Fix type casting errors for Xtream API

This commit is contained in:
2026-02-25 13:10:39 -03:00
parent dd61066b3a
commit 1f5b53ea3c

View File

@@ -7,11 +7,18 @@ class XtreamCategory {
factory XtreamCategory.fromJson(Map<String, dynamic> json) { factory XtreamCategory.fromJson(Map<String, dynamic> json) {
return XtreamCategory( return XtreamCategory(
id: json['category_id']?.toString() ?? '', id: json['category_id']?.toString() ?? '',
name: json['category_name'] ?? '', name: json['category_name']?.toString() ?? '',
); );
} }
} }
int _parseInt(dynamic value) {
if (value == null) return 0;
if (value is int) return value;
if (value is String) return int.tryParse(value) ?? 0;
return 0;
}
class XtreamStream { class XtreamStream {
final int streamId; final int streamId;
final String name; final String name;
@@ -33,12 +40,12 @@ class XtreamStream {
factory XtreamStream.fromJson(Map<String, dynamic> json) { factory XtreamStream.fromJson(Map<String, dynamic> json) {
return XtreamStream( return XtreamStream(
streamId: json['stream_id'] ?? 0, streamId: _parseInt(json['stream_id']),
name: json['name'] ?? '', name: json['name']?.toString() ?? '',
streamIcon: json['stream_icon'], streamIcon: json['stream_icon']?.toString(),
plot: json['plot'], plot: json['plot']?.toString(),
rating: json['rating'], rating: json['rating']?.toString(),
containerExtension: json['container_extension'], containerExtension: json['container_extension']?.toString(),
url: null, url: null,
); );
} }
@@ -75,11 +82,11 @@ class XtreamSeries {
factory XtreamSeries.fromJson(Map<String, dynamic> json) { factory XtreamSeries.fromJson(Map<String, dynamic> json) {
return XtreamSeries( return XtreamSeries(
seriesId: json['series_id'] ?? 0, seriesId: _parseInt(json['series_id']),
name: json['name'] ?? '', name: json['name']?.toString() ?? '',
cover: json['cover'], cover: json['cover']?.toString(),
plot: json['plot'], plot: json['plot']?.toString(),
rating: json['rating'], rating: json['rating']?.toString(),
seasons: [], seasons: [],
); );
} }
@@ -113,12 +120,12 @@ class XtreamEpisode {
factory XtreamEpisode.fromJson(Map<String, dynamic> json) { factory XtreamEpisode.fromJson(Map<String, dynamic> json) {
return XtreamEpisode( return XtreamEpisode(
episodeId: json['id'] ?? 0, episodeId: _parseInt(json['id']),
seasonNumber: json['season'] ?? 0, seasonNumber: _parseInt(json['season']),
episodeNumber: json['episode_num'] ?? 0, episodeNumber: _parseInt(json['episode_num']),
title: json['title'] ?? '', title: json['title']?.toString() ?? '',
info: json['info'], info: json['info']?.toString(),
containerExtension: json['container_extension'], containerExtension: json['container_extension']?.toString(),
url: null, url: null,
); );
} }
@@ -146,13 +153,13 @@ class XtreamUserInfo {
factory XtreamUserInfo.fromJson(Map<String, dynamic> json) { factory XtreamUserInfo.fromJson(Map<String, dynamic> json) {
final userInfo = json['user_info'] ?? json; final userInfo = json['user_info'] ?? json;
return XtreamUserInfo( return XtreamUserInfo(
username: userInfo['username'] ?? '', username: userInfo['username']?.toString() ?? '',
password: userInfo['password'] ?? '', password: userInfo['password']?.toString() ?? '',
maxConnections: int.tryParse(userInfo['max_connections']?.toString() ?? '1') ?? 1, maxConnections: _parseInt(userInfo['max_connections']),
activeCons: int.tryParse(userInfo['active_cons']?.toString() ?? '0') ?? 0, activeCons: _parseInt(userInfo['active_cons']),
isTrial: userInfo['is_trial'] == '1', isTrial: userInfo['is_trial']?.toString() == '1',
expDate: userInfo['exp_date'], expDate: userInfo['exp_date'] != null ? _parseInt(userInfo['exp_date']) : null,
status: userInfo['status'] ?? '', status: userInfo['status']?.toString() ?? '',
); );
} }
} }