AdBreakClipInfo pigeon, android, ios, flutter

This commit is contained in:
gianlucaparadise 2022-01-12 06:09:50 +01:00
parent 778081927f
commit ad37766f94
7 changed files with 385 additions and 80 deletions

View file

@ -146,6 +146,10 @@ public class PlatformBridgeApis {
public Long getStreamDuration() { return streamDuration; } public Long getStreamDuration() { return streamDuration; }
public void setStreamDuration(Long setterArg) { this.streamDuration = setterArg; } public void setStreamDuration(Long setterArg) { this.streamDuration = setterArg; }
private List<AdBreakClipInfo> adBreakClips;
public List<AdBreakClipInfo> getAdBreakClips() { return adBreakClips; }
public void setAdBreakClips(List<AdBreakClipInfo> setterArg) { this.adBreakClips = setterArg; }
private String customDataAsJson; private String customDataAsJson;
public String getCustomDataAsJson() { return customDataAsJson; } public String getCustomDataAsJson() { return customDataAsJson; }
public void setCustomDataAsJson(String setterArg) { this.customDataAsJson = setterArg; } public void setCustomDataAsJson(String setterArg) { this.customDataAsJson = setterArg; }
@ -158,6 +162,7 @@ public class PlatformBridgeApis {
toMapResult.put("mediaMetadata", (mediaMetadata == null) ? null : mediaMetadata.toMap()); toMapResult.put("mediaMetadata", (mediaMetadata == null) ? null : mediaMetadata.toMap());
toMapResult.put("mediaTracks", mediaTracks); toMapResult.put("mediaTracks", mediaTracks);
toMapResult.put("streamDuration", streamDuration); toMapResult.put("streamDuration", streamDuration);
toMapResult.put("adBreakClips", adBreakClips);
toMapResult.put("customDataAsJson", customDataAsJson); toMapResult.put("customDataAsJson", customDataAsJson);
return toMapResult; return toMapResult;
} }
@ -175,6 +180,8 @@ public class PlatformBridgeApis {
fromMapResult.mediaTracks = (List<MediaTrack>)mediaTracks; fromMapResult.mediaTracks = (List<MediaTrack>)mediaTracks;
Object streamDuration = map.get("streamDuration"); Object streamDuration = map.get("streamDuration");
fromMapResult.streamDuration = (streamDuration == null) ? null : ((streamDuration instanceof Integer) ? (Integer)streamDuration : (Long)streamDuration); fromMapResult.streamDuration = (streamDuration == null) ? null : ((streamDuration instanceof Integer) ? (Integer)streamDuration : (Long)streamDuration);
Object adBreakClips = map.get("adBreakClips");
fromMapResult.adBreakClips = (List<AdBreakClipInfo>)adBreakClips;
Object customDataAsJson = map.get("customDataAsJson"); Object customDataAsJson = map.get("customDataAsJson");
fromMapResult.customDataAsJson = (String)customDataAsJson; fromMapResult.customDataAsJson = (String)customDataAsJson;
return fromMapResult; return fromMapResult;
@ -353,6 +360,81 @@ public class PlatformBridgeApis {
} }
} }
/** Generated class from Pigeon that represents data sent in messages. */
public static class AdBreakClipInfo {
private String id;
public String getId() { return id; }
public void setId(String setterArg) { this.id = setterArg; }
private String title;
public String getTitle() { return title; }
public void setTitle(String setterArg) { this.title = setterArg; }
private String contentId;
public String getContentId() { return contentId; }
public void setContentId(String setterArg) { this.contentId = setterArg; }
private String contentUrl;
public String getContentUrl() { return contentUrl; }
public void setContentUrl(String setterArg) { this.contentUrl = setterArg; }
private String clickThroughUrl;
public String getClickThroughUrl() { return clickThroughUrl; }
public void setClickThroughUrl(String setterArg) { this.clickThroughUrl = setterArg; }
private Long durationMs;
public Long getDurationMs() { return durationMs; }
public void setDurationMs(Long setterArg) { this.durationMs = setterArg; }
private String imageUrl;
public String getImageUrl() { return imageUrl; }
public void setImageUrl(String setterArg) { this.imageUrl = setterArg; }
private String mimeType;
public String getMimeType() { return mimeType; }
public void setMimeType(String setterArg) { this.mimeType = setterArg; }
private Long whenSkippableMs;
public Long getWhenSkippableMs() { return whenSkippableMs; }
public void setWhenSkippableMs(Long setterArg) { this.whenSkippableMs = setterArg; }
Map<String, Object> toMap() {
Map<String, Object> toMapResult = new HashMap<>();
toMapResult.put("id", id);
toMapResult.put("title", title);
toMapResult.put("contentId", contentId);
toMapResult.put("contentUrl", contentUrl);
toMapResult.put("clickThroughUrl", clickThroughUrl);
toMapResult.put("durationMs", durationMs);
toMapResult.put("imageUrl", imageUrl);
toMapResult.put("mimeType", mimeType);
toMapResult.put("whenSkippableMs", whenSkippableMs);
return toMapResult;
}
static AdBreakClipInfo fromMap(Map<String, Object> map) {
AdBreakClipInfo fromMapResult = new AdBreakClipInfo();
Object id = map.get("id");
fromMapResult.id = (String)id;
Object title = map.get("title");
fromMapResult.title = (String)title;
Object contentId = map.get("contentId");
fromMapResult.contentId = (String)contentId;
Object contentUrl = map.get("contentUrl");
fromMapResult.contentUrl = (String)contentUrl;
Object clickThroughUrl = map.get("clickThroughUrl");
fromMapResult.clickThroughUrl = (String)clickThroughUrl;
Object durationMs = map.get("durationMs");
fromMapResult.durationMs = (durationMs == null) ? null : ((durationMs instanceof Integer) ? (Integer)durationMs : (Long)durationMs);
Object imageUrl = map.get("imageUrl");
fromMapResult.imageUrl = (String)imageUrl;
Object mimeType = map.get("mimeType");
fromMapResult.mimeType = (String)mimeType;
Object whenSkippableMs = map.get("whenSkippableMs");
fromMapResult.whenSkippableMs = (whenSkippableMs == null) ? null : ((whenSkippableMs instanceof Integer) ? (Integer)whenSkippableMs : (Long)whenSkippableMs);
return fromMapResult;
}
}
/** Generated class from Pigeon that represents data sent in messages. */ /** Generated class from Pigeon that represents data sent in messages. */
public static class CastDevice { public static class CastDevice {
private String deviceId; private String deviceId;
@ -418,24 +500,27 @@ public class PlatformBridgeApis {
protected Object readValueOfType(byte type, ByteBuffer buffer) { protected Object readValueOfType(byte type, ByteBuffer buffer) {
switch (type) { switch (type) {
case (byte)128: case (byte)128:
return CastDevice.fromMap((Map<String, Object>) readValue(buffer)); return AdBreakClipInfo.fromMap((Map<String, Object>) readValue(buffer));
case (byte)129: case (byte)129:
return CastMessage.fromMap((Map<String, Object>) readValue(buffer)); return CastDevice.fromMap((Map<String, Object>) readValue(buffer));
case (byte)130: case (byte)130:
return MediaInfo.fromMap((Map<String, Object>) readValue(buffer)); return CastMessage.fromMap((Map<String, Object>) readValue(buffer));
case (byte)131: case (byte)131:
return MediaLoadRequestData.fromMap((Map<String, Object>) readValue(buffer)); return MediaInfo.fromMap((Map<String, Object>) readValue(buffer));
case (byte)132: case (byte)132:
return MediaMetadata.fromMap((Map<String, Object>) readValue(buffer)); return MediaLoadRequestData.fromMap((Map<String, Object>) readValue(buffer));
case (byte)133: case (byte)133:
return MediaTrack.fromMap((Map<String, Object>) readValue(buffer)); return MediaMetadata.fromMap((Map<String, Object>) readValue(buffer));
case (byte)134: case (byte)134:
return MediaTrack.fromMap((Map<String, Object>) readValue(buffer));
case (byte)135:
return WebImage.fromMap((Map<String, Object>) readValue(buffer)); return WebImage.fromMap((Map<String, Object>) readValue(buffer));
default: default:
@ -445,32 +530,36 @@ public class PlatformBridgeApis {
} }
@Override @Override
protected void writeValue(ByteArrayOutputStream stream, Object value) { protected void writeValue(ByteArrayOutputStream stream, Object value) {
if (value instanceof CastDevice) { if (value instanceof AdBreakClipInfo) {
stream.write(128); stream.write(128);
writeValue(stream, ((AdBreakClipInfo) value).toMap());
} else
if (value instanceof CastDevice) {
stream.write(129);
writeValue(stream, ((CastDevice) value).toMap()); writeValue(stream, ((CastDevice) value).toMap());
} else } else
if (value instanceof CastMessage) { if (value instanceof CastMessage) {
stream.write(129); stream.write(130);
writeValue(stream, ((CastMessage) value).toMap()); writeValue(stream, ((CastMessage) value).toMap());
} else } else
if (value instanceof MediaInfo) { if (value instanceof MediaInfo) {
stream.write(130); stream.write(131);
writeValue(stream, ((MediaInfo) value).toMap()); writeValue(stream, ((MediaInfo) value).toMap());
} else } else
if (value instanceof MediaLoadRequestData) { if (value instanceof MediaLoadRequestData) {
stream.write(131); stream.write(132);
writeValue(stream, ((MediaLoadRequestData) value).toMap()); writeValue(stream, ((MediaLoadRequestData) value).toMap());
} else } else
if (value instanceof MediaMetadata) { if (value instanceof MediaMetadata) {
stream.write(132); stream.write(133);
writeValue(stream, ((MediaMetadata) value).toMap()); writeValue(stream, ((MediaMetadata) value).toMap());
} else } else
if (value instanceof MediaTrack) { if (value instanceof MediaTrack) {
stream.write(133); stream.write(134);
writeValue(stream, ((MediaTrack) value).toMap()); writeValue(stream, ((MediaTrack) value).toMap());
} else } else
if (value instanceof WebImage) { if (value instanceof WebImage) {
stream.write(134); stream.write(135);
writeValue(stream, ((WebImage) value).toMap()); writeValue(stream, ((WebImage) value).toMap());
} else } else
{ {
@ -733,24 +822,27 @@ public class PlatformBridgeApis {
protected Object readValueOfType(byte type, ByteBuffer buffer) { protected Object readValueOfType(byte type, ByteBuffer buffer) {
switch (type) { switch (type) {
case (byte)128: case (byte)128:
return AdBreakStatus.fromMap((Map<String, Object>) readValue(buffer)); return AdBreakClipInfo.fromMap((Map<String, Object>) readValue(buffer));
case (byte)129: case (byte)129:
return CastMessage.fromMap((Map<String, Object>) readValue(buffer)); return AdBreakStatus.fromMap((Map<String, Object>) readValue(buffer));
case (byte)130: case (byte)130:
return MediaInfo.fromMap((Map<String, Object>) readValue(buffer)); return CastMessage.fromMap((Map<String, Object>) readValue(buffer));
case (byte)131: case (byte)131:
return MediaMetadata.fromMap((Map<String, Object>) readValue(buffer)); return MediaInfo.fromMap((Map<String, Object>) readValue(buffer));
case (byte)132: case (byte)132:
return MediaStatus.fromMap((Map<String, Object>) readValue(buffer)); return MediaMetadata.fromMap((Map<String, Object>) readValue(buffer));
case (byte)133: case (byte)133:
return MediaTrack.fromMap((Map<String, Object>) readValue(buffer)); return MediaStatus.fromMap((Map<String, Object>) readValue(buffer));
case (byte)134: case (byte)134:
return MediaTrack.fromMap((Map<String, Object>) readValue(buffer));
case (byte)135:
return WebImage.fromMap((Map<String, Object>) readValue(buffer)); return WebImage.fromMap((Map<String, Object>) readValue(buffer));
default: default:
@ -760,32 +852,36 @@ public class PlatformBridgeApis {
} }
@Override @Override
protected void writeValue(ByteArrayOutputStream stream, Object value) { protected void writeValue(ByteArrayOutputStream stream, Object value) {
if (value instanceof AdBreakStatus) { if (value instanceof AdBreakClipInfo) {
stream.write(128); stream.write(128);
writeValue(stream, ((AdBreakClipInfo) value).toMap());
} else
if (value instanceof AdBreakStatus) {
stream.write(129);
writeValue(stream, ((AdBreakStatus) value).toMap()); writeValue(stream, ((AdBreakStatus) value).toMap());
} else } else
if (value instanceof CastMessage) { if (value instanceof CastMessage) {
stream.write(129); stream.write(130);
writeValue(stream, ((CastMessage) value).toMap()); writeValue(stream, ((CastMessage) value).toMap());
} else } else
if (value instanceof MediaInfo) { if (value instanceof MediaInfo) {
stream.write(130); stream.write(131);
writeValue(stream, ((MediaInfo) value).toMap()); writeValue(stream, ((MediaInfo) value).toMap());
} else } else
if (value instanceof MediaMetadata) { if (value instanceof MediaMetadata) {
stream.write(131); stream.write(132);
writeValue(stream, ((MediaMetadata) value).toMap()); writeValue(stream, ((MediaMetadata) value).toMap());
} else } else
if (value instanceof MediaStatus) { if (value instanceof MediaStatus) {
stream.write(132); stream.write(133);
writeValue(stream, ((MediaStatus) value).toMap()); writeValue(stream, ((MediaStatus) value).toMap());
} else } else
if (value instanceof MediaTrack) { if (value instanceof MediaTrack) {
stream.write(133); stream.write(134);
writeValue(stream, ((MediaTrack) value).toMap()); writeValue(stream, ((MediaTrack) value).toMap());
} else } else
if (value instanceof WebImage) { if (value instanceof WebImage) {
stream.write(134); stream.write(135);
writeValue(stream, ((WebImage) value).toMap()); writeValue(stream, ((WebImage) value).toMap());
} else } else
{ {

View file

@ -41,6 +41,7 @@ fun getFlutterMediaInfo(mediaInfo: MediaInfo?): PlatformBridgeApis.MediaInfo {
val flutterMediaMetadata = getFlutterMediaMetadata(mediaInfo?.metadata) val flutterMediaMetadata = getFlutterMediaMetadata(mediaInfo?.metadata)
val flutterMediaTracks = getFlutterMediaTracks(mediaInfo?.mediaTracks) val flutterMediaTracks = getFlutterMediaTracks(mediaInfo?.mediaTracks)
val flutterStreamType = getFlutterStreamType(mediaInfo?.streamType) val flutterStreamType = getFlutterStreamType(mediaInfo?.streamType)
val flutterAdBreakClips = getFlutterAdBreakClips(mediaInfo?.adBreakClips)
return PlatformBridgeApis.MediaInfo().apply { return PlatformBridgeApis.MediaInfo().apply {
contentId = mediaInfo?.contentId ?: "" contentId = mediaInfo?.contentId ?: ""
@ -50,6 +51,7 @@ fun getFlutterMediaInfo(mediaInfo: MediaInfo?): PlatformBridgeApis.MediaInfo {
mediaTracks = flutterMediaTracks mediaTracks = flutterMediaTracks
streamDuration = mediaInfo?.streamDuration ?: 0 streamDuration = mediaInfo?.streamDuration ?: 0
streamType = flutterStreamType streamType = flutterStreamType
adBreakClips = flutterAdBreakClips
} }
} }
@ -83,6 +85,26 @@ fun getFlutterMediaTrack(mediaTrack: MediaTrack?): PlatformBridgeApis.MediaTrack
} }
} }
fun getFlutterAdBreakClips(adBreakClips: List<AdBreakClipInfo>?): List<PlatformBridgeApis.AdBreakClipInfo> {
return adBreakClips?.map {
getFlutterAdBreakClipInfo(it)
} ?: emptyList()
}
fun getFlutterAdBreakClipInfo(adBreakClipInfo: AdBreakClipInfo?): PlatformBridgeApis.AdBreakClipInfo {
return PlatformBridgeApis.AdBreakClipInfo().apply {
id = adBreakClipInfo?.id
title = adBreakClipInfo?.title
contentId = adBreakClipInfo?.contentId
contentUrl = adBreakClipInfo?.contentUrl
clickThroughUrl = adBreakClipInfo?.clickThroughUrl
durationMs = adBreakClipInfo?.durationInMs
imageUrl = adBreakClipInfo?.imageUrl
mimeType = adBreakClipInfo?.mimeType
whenSkippableMs = adBreakClipInfo?.whenSkippableInMs
}
}
fun getFlutterType(type: Int?): PlatformBridgeApis.TrackType { fun getFlutterType(type: Int?): PlatformBridgeApis.TrackType {
return when (type) { return when (type) {
0 -> PlatformBridgeApis.TrackType.unknown 0 -> PlatformBridgeApis.TrackType.unknown

View file

@ -38,6 +38,10 @@ func getFlutterAdBreakStatus(adBreakStatus: GCKAdBreakStatus?) -> AdBreakStatus
} }
func getFlutterWhenSkippableMs(whenSkippable: TimeInterval?) -> NSNumber { func getFlutterWhenSkippableMs(whenSkippable: TimeInterval?) -> NSNumber {
if (whenSkippable == nil || whenSkippable?.isNaN == true || whenSkippable?.isInfinite == true) {
return 0
}
let whenSkippableSecs = whenSkippable ?? 0 let whenSkippableSecs = whenSkippable ?? 0
let whenSkippableMs = Int(whenSkippableSecs * 1000) let whenSkippableMs = Int(whenSkippableSecs * 1000)
@ -77,12 +81,13 @@ func getFlutterMediaInfo(mediaInfo: GCKMediaInformation?) -> MediaInfo {
result.mediaTracks = getFlutterMediaTracks(mediaTracks: mediaInfo?.mediaTracks) result.mediaTracks = getFlutterMediaTracks(mediaTracks: mediaInfo?.mediaTracks)
result.streamDuration = getStreamDuration(streamDuration: mediaInfo?.streamDuration) result.streamDuration = getStreamDuration(streamDuration: mediaInfo?.streamDuration)
result.streamType = getFlutterStreamType(streamType: mediaInfo?.streamType) result.streamType = getFlutterStreamType(streamType: mediaInfo?.streamType)
result.adBreakClips = getFlutterAdBreakClips(adBreakClips: mediaInfo?.adBreakClips)
return result return result
} }
func getStreamDuration(streamDuration: TimeInterval?) -> NSNumber { func getStreamDuration(streamDuration: TimeInterval?) -> NSNumber {
if (streamDuration == nil) { if (streamDuration == nil || streamDuration?.isNaN == true || streamDuration?.isInfinite == true) {
return 0 return 0
} }
@ -134,6 +139,35 @@ func getFlutterMediaTrack(mediaTrack: GCKMediaTrack) -> MediaTrack {
return result return result
} }
func getFlutterAdBreakClips(adBreakClips: [GCKAdBreakClipInfo]?) -> [AdBreakClipInfo]? {
if (adBreakClips == nil) {
return nil
}
var result = [AdBreakClipInfo]()
adBreakClips?.forEach({ (info: GCKAdBreakClipInfo) in
let resultInfo = getFlutterAdBreakClipInfo(adBreakClipInfo: info)
result.append(resultInfo)
})
return result
}
func getFlutterAdBreakClipInfo(adBreakClipInfo: GCKAdBreakClipInfo) -> AdBreakClipInfo {
let result = AdBreakClipInfo()
result.id = adBreakClipInfo.adBreakClipID
result.title = adBreakClipInfo.title
result.contentId = adBreakClipInfo.contentID
result.contentUrl = adBreakClipInfo.contentURL?.absoluteString
result.clickThroughUrl = adBreakClipInfo.clickThroughURL?.absoluteString
result.durationMs = getStreamDuration(streamDuration: adBreakClipInfo.duration)
result.imageUrl = adBreakClipInfo.posterURL?.absoluteString
result.mimeType = adBreakClipInfo.mimeType
result.whenSkippableMs = getFlutterWhenSkippableMs(whenSkippable: adBreakClipInfo.whenSkippable)
return result
}
func getFlutterTrackType(trackType: GCKMediaTrackType) -> TrackType { func getFlutterTrackType(trackType: GCKMediaTrackType) -> TrackType {
switch trackType { switch trackType {

View file

@ -58,6 +58,7 @@ typedef NS_ENUM(NSUInteger, PlayerState) {
@class MediaTrack; @class MediaTrack;
@class MediaStatus; @class MediaStatus;
@class AdBreakStatus; @class AdBreakStatus;
@class AdBreakClipInfo;
@class CastDevice; @class CastDevice;
@class CastMessage; @class CastMessage;
@ -74,6 +75,7 @@ typedef NS_ENUM(NSUInteger, PlayerState) {
@property(nonatomic, strong, nullable) MediaMetadata * mediaMetadata; @property(nonatomic, strong, nullable) MediaMetadata * mediaMetadata;
@property(nonatomic, strong, nullable) NSArray<MediaTrack *> * mediaTracks; @property(nonatomic, strong, nullable) NSArray<MediaTrack *> * mediaTracks;
@property(nonatomic, strong, nullable) NSNumber * streamDuration; @property(nonatomic, strong, nullable) NSNumber * streamDuration;
@property(nonatomic, strong, nullable) NSArray<AdBreakClipInfo *> * adBreakClips;
@property(nonatomic, copy, nullable) NSString * customDataAsJson; @property(nonatomic, copy, nullable) NSString * customDataAsJson;
@end @end
@ -108,6 +110,18 @@ typedef NS_ENUM(NSUInteger, PlayerState) {
@property(nonatomic, strong, nullable) NSNumber * whenSkippableMs; @property(nonatomic, strong, nullable) NSNumber * whenSkippableMs;
@end @end
@interface AdBreakClipInfo : NSObject
@property(nonatomic, copy, nullable) NSString * id;
@property(nonatomic, copy, nullable) NSString * title;
@property(nonatomic, copy, nullable) NSString * contentId;
@property(nonatomic, copy, nullable) NSString * contentUrl;
@property(nonatomic, copy, nullable) NSString * clickThroughUrl;
@property(nonatomic, strong, nullable) NSNumber * durationMs;
@property(nonatomic, copy, nullable) NSString * imageUrl;
@property(nonatomic, copy, nullable) NSString * mimeType;
@property(nonatomic, strong, nullable) NSNumber * whenSkippableMs;
@end
@interface CastDevice : NSObject @interface CastDevice : NSObject
@property(nonatomic, copy, nullable) NSString * deviceId; @property(nonatomic, copy, nullable) NSString * deviceId;
@property(nonatomic, copy, nullable) NSString * friendlyName; @property(nonatomic, copy, nullable) NSString * friendlyName;

View file

@ -50,6 +50,10 @@ static NSDictionary<NSString *, id> *wrapResult(id result, FlutterError *error)
+ (AdBreakStatus *)fromMap:(NSDictionary *)dict; + (AdBreakStatus *)fromMap:(NSDictionary *)dict;
- (NSDictionary *)toMap; - (NSDictionary *)toMap;
@end @end
@interface AdBreakClipInfo ()
+ (AdBreakClipInfo *)fromMap:(NSDictionary *)dict;
- (NSDictionary *)toMap;
@end
@interface CastDevice () @interface CastDevice ()
+ (CastDevice *)fromMap:(NSDictionary *)dict; + (CastDevice *)fromMap:(NSDictionary *)dict;
- (NSDictionary *)toMap; - (NSDictionary *)toMap;
@ -105,6 +109,10 @@ static NSDictionary<NSString *, id> *wrapResult(id result, FlutterError *error)
if ((NSNull *)result.streamDuration == [NSNull null]) { if ((NSNull *)result.streamDuration == [NSNull null]) {
result.streamDuration = nil; result.streamDuration = nil;
} }
result.adBreakClips = dict[@"adBreakClips"];
if ((NSNull *)result.adBreakClips == [NSNull null]) {
result.adBreakClips = nil;
}
result.customDataAsJson = dict[@"customDataAsJson"]; result.customDataAsJson = dict[@"customDataAsJson"];
if ((NSNull *)result.customDataAsJson == [NSNull null]) { if ((NSNull *)result.customDataAsJson == [NSNull null]) {
result.customDataAsJson = nil; result.customDataAsJson = nil;
@ -112,7 +120,7 @@ static NSDictionary<NSString *, id> *wrapResult(id result, FlutterError *error)
return result; return result;
} }
- (NSDictionary *)toMap { - (NSDictionary *)toMap {
return [NSDictionary dictionaryWithObjectsAndKeys:(self.contentId ? self.contentId : [NSNull null]), @"contentId", @(self.streamType), @"streamType", (self.contentType ? self.contentType : [NSNull null]), @"contentType", (self.mediaMetadata ? [self.mediaMetadata toMap] : [NSNull null]), @"mediaMetadata", (self.mediaTracks ? self.mediaTracks : [NSNull null]), @"mediaTracks", (self.streamDuration ? self.streamDuration : [NSNull null]), @"streamDuration", (self.customDataAsJson ? self.customDataAsJson : [NSNull null]), @"customDataAsJson", nil]; return [NSDictionary dictionaryWithObjectsAndKeys:(self.contentId ? self.contentId : [NSNull null]), @"contentId", @(self.streamType), @"streamType", (self.contentType ? self.contentType : [NSNull null]), @"contentType", (self.mediaMetadata ? [self.mediaMetadata toMap] : [NSNull null]), @"mediaMetadata", (self.mediaTracks ? self.mediaTracks : [NSNull null]), @"mediaTracks", (self.streamDuration ? self.streamDuration : [NSNull null]), @"streamDuration", (self.adBreakClips ? self.adBreakClips : [NSNull null]), @"adBreakClips", (self.customDataAsJson ? self.customDataAsJson : [NSNull null]), @"customDataAsJson", nil];
} }
@end @end
@ -218,6 +226,52 @@ static NSDictionary<NSString *, id> *wrapResult(id result, FlutterError *error)
} }
@end @end
@implementation AdBreakClipInfo
+ (AdBreakClipInfo *)fromMap:(NSDictionary *)dict {
AdBreakClipInfo *result = [[AdBreakClipInfo alloc] init];
result.id = dict[@"id"];
if ((NSNull *)result.id == [NSNull null]) {
result.id = nil;
}
result.title = dict[@"title"];
if ((NSNull *)result.title == [NSNull null]) {
result.title = nil;
}
result.contentId = dict[@"contentId"];
if ((NSNull *)result.contentId == [NSNull null]) {
result.contentId = nil;
}
result.contentUrl = dict[@"contentUrl"];
if ((NSNull *)result.contentUrl == [NSNull null]) {
result.contentUrl = nil;
}
result.clickThroughUrl = dict[@"clickThroughUrl"];
if ((NSNull *)result.clickThroughUrl == [NSNull null]) {
result.clickThroughUrl = nil;
}
result.durationMs = dict[@"durationMs"];
if ((NSNull *)result.durationMs == [NSNull null]) {
result.durationMs = nil;
}
result.imageUrl = dict[@"imageUrl"];
if ((NSNull *)result.imageUrl == [NSNull null]) {
result.imageUrl = nil;
}
result.mimeType = dict[@"mimeType"];
if ((NSNull *)result.mimeType == [NSNull null]) {
result.mimeType = nil;
}
result.whenSkippableMs = dict[@"whenSkippableMs"];
if ((NSNull *)result.whenSkippableMs == [NSNull null]) {
result.whenSkippableMs = nil;
}
return result;
}
- (NSDictionary *)toMap {
return [NSDictionary dictionaryWithObjectsAndKeys:(self.id ? self.id : [NSNull null]), @"id", (self.title ? self.title : [NSNull null]), @"title", (self.contentId ? self.contentId : [NSNull null]), @"contentId", (self.contentUrl ? self.contentUrl : [NSNull null]), @"contentUrl", (self.clickThroughUrl ? self.clickThroughUrl : [NSNull null]), @"clickThroughUrl", (self.durationMs ? self.durationMs : [NSNull null]), @"durationMs", (self.imageUrl ? self.imageUrl : [NSNull null]), @"imageUrl", (self.mimeType ? self.mimeType : [NSNull null]), @"mimeType", (self.whenSkippableMs ? self.whenSkippableMs : [NSNull null]), @"whenSkippableMs", nil];
}
@end
@implementation CastDevice @implementation CastDevice
+ (CastDevice *)fromMap:(NSDictionary *)dict { + (CastDevice *)fromMap:(NSDictionary *)dict {
CastDevice *result = [[CastDevice alloc] init]; CastDevice *result = [[CastDevice alloc] init];
@ -265,24 +319,27 @@ static NSDictionary<NSString *, id> *wrapResult(id result, FlutterError *error)
{ {
switch (type) { switch (type) {
case 128: case 128:
return [CastDevice fromMap:[self readValue]]; return [AdBreakClipInfo fromMap:[self readValue]];
case 129: case 129:
return [CastMessage fromMap:[self readValue]]; return [CastDevice fromMap:[self readValue]];
case 130: case 130:
return [MediaInfo fromMap:[self readValue]]; return [CastMessage fromMap:[self readValue]];
case 131: case 131:
return [MediaLoadRequestData fromMap:[self readValue]]; return [MediaInfo fromMap:[self readValue]];
case 132: case 132:
return [MediaMetadata fromMap:[self readValue]]; return [MediaLoadRequestData fromMap:[self readValue]];
case 133: case 133:
return [MediaTrack fromMap:[self readValue]]; return [MediaMetadata fromMap:[self readValue]];
case 134: case 134:
return [MediaTrack fromMap:[self readValue]];
case 135:
return [WebImage fromMap:[self readValue]]; return [WebImage fromMap:[self readValue]];
default: default:
@ -297,34 +354,38 @@ static NSDictionary<NSString *, id> *wrapResult(id result, FlutterError *error)
@implementation CastHostApiCodecWriter @implementation CastHostApiCodecWriter
- (void)writeValue:(id)value - (void)writeValue:(id)value
{ {
if ([value isKindOfClass:[CastDevice class]]) { if ([value isKindOfClass:[AdBreakClipInfo class]]) {
[self writeByte:128]; [self writeByte:128];
[self writeValue:[value toMap]]; [self writeValue:[value toMap]];
} else } else
if ([value isKindOfClass:[CastMessage class]]) { if ([value isKindOfClass:[CastDevice class]]) {
[self writeByte:129]; [self writeByte:129];
[self writeValue:[value toMap]]; [self writeValue:[value toMap]];
} else } else
if ([value isKindOfClass:[MediaInfo class]]) { if ([value isKindOfClass:[CastMessage class]]) {
[self writeByte:130]; [self writeByte:130];
[self writeValue:[value toMap]]; [self writeValue:[value toMap]];
} else } else
if ([value isKindOfClass:[MediaLoadRequestData class]]) { if ([value isKindOfClass:[MediaInfo class]]) {
[self writeByte:131]; [self writeByte:131];
[self writeValue:[value toMap]]; [self writeValue:[value toMap]];
} else } else
if ([value isKindOfClass:[MediaMetadata class]]) { if ([value isKindOfClass:[MediaLoadRequestData class]]) {
[self writeByte:132]; [self writeByte:132];
[self writeValue:[value toMap]]; [self writeValue:[value toMap]];
} else } else
if ([value isKindOfClass:[MediaTrack class]]) { if ([value isKindOfClass:[MediaMetadata class]]) {
[self writeByte:133]; [self writeByte:133];
[self writeValue:[value toMap]]; [self writeValue:[value toMap]];
} else } else
if ([value isKindOfClass:[WebImage class]]) { if ([value isKindOfClass:[MediaTrack class]]) {
[self writeByte:134]; [self writeByte:134];
[self writeValue:[value toMap]]; [self writeValue:[value toMap]];
} else } else
if ([value isKindOfClass:[WebImage class]]) {
[self writeByte:135];
[self writeValue:[value toMap]];
} else
{ {
[super writeValue:value]; [super writeValue:value];
} }
@ -566,24 +627,27 @@ void CastHostApiSetup(id<FlutterBinaryMessenger> binaryMessenger, NSObject<CastH
{ {
switch (type) { switch (type) {
case 128: case 128:
return [AdBreakStatus fromMap:[self readValue]]; return [AdBreakClipInfo fromMap:[self readValue]];
case 129: case 129:
return [CastMessage fromMap:[self readValue]]; return [AdBreakStatus fromMap:[self readValue]];
case 130: case 130:
return [MediaInfo fromMap:[self readValue]]; return [CastMessage fromMap:[self readValue]];
case 131: case 131:
return [MediaMetadata fromMap:[self readValue]]; return [MediaInfo fromMap:[self readValue]];
case 132: case 132:
return [MediaStatus fromMap:[self readValue]]; return [MediaMetadata fromMap:[self readValue]];
case 133: case 133:
return [MediaTrack fromMap:[self readValue]]; return [MediaStatus fromMap:[self readValue]];
case 134: case 134:
return [MediaTrack fromMap:[self readValue]];
case 135:
return [WebImage fromMap:[self readValue]]; return [WebImage fromMap:[self readValue]];
default: default:
@ -598,34 +662,38 @@ void CastHostApiSetup(id<FlutterBinaryMessenger> binaryMessenger, NSObject<CastH
@implementation CastFlutterApiCodecWriter @implementation CastFlutterApiCodecWriter
- (void)writeValue:(id)value - (void)writeValue:(id)value
{ {
if ([value isKindOfClass:[AdBreakStatus class]]) { if ([value isKindOfClass:[AdBreakClipInfo class]]) {
[self writeByte:128]; [self writeByte:128];
[self writeValue:[value toMap]]; [self writeValue:[value toMap]];
} else } else
if ([value isKindOfClass:[CastMessage class]]) { if ([value isKindOfClass:[AdBreakStatus class]]) {
[self writeByte:129]; [self writeByte:129];
[self writeValue:[value toMap]]; [self writeValue:[value toMap]];
} else } else
if ([value isKindOfClass:[MediaInfo class]]) { if ([value isKindOfClass:[CastMessage class]]) {
[self writeByte:130]; [self writeByte:130];
[self writeValue:[value toMap]]; [self writeValue:[value toMap]];
} else } else
if ([value isKindOfClass:[MediaMetadata class]]) { if ([value isKindOfClass:[MediaInfo class]]) {
[self writeByte:131]; [self writeByte:131];
[self writeValue:[value toMap]]; [self writeValue:[value toMap]];
} else } else
if ([value isKindOfClass:[MediaStatus class]]) { if ([value isKindOfClass:[MediaMetadata class]]) {
[self writeByte:132]; [self writeByte:132];
[self writeValue:[value toMap]]; [self writeValue:[value toMap]];
} else } else
if ([value isKindOfClass:[MediaTrack class]]) { if ([value isKindOfClass:[MediaStatus class]]) {
[self writeByte:133]; [self writeByte:133];
[self writeValue:[value toMap]]; [self writeValue:[value toMap]];
} else } else
if ([value isKindOfClass:[WebImage class]]) { if ([value isKindOfClass:[MediaTrack class]]) {
[self writeByte:134]; [self writeByte:134];
[self writeValue:[value toMap]]; [self writeValue:[value toMap]];
} else } else
if ([value isKindOfClass:[WebImage class]]) {
[self writeByte:135];
[self writeValue:[value toMap]];
} else
{ {
[super writeValue:value]; [super writeValue:value];
} }

View file

@ -82,6 +82,7 @@ class MediaInfo {
MediaMetadata? mediaMetadata; MediaMetadata? mediaMetadata;
List<MediaTrack?>? mediaTracks; List<MediaTrack?>? mediaTracks;
int? streamDuration; int? streamDuration;
List<AdBreakClipInfo?>? adBreakClips;
String? customDataAsJson; String? customDataAsJson;
Object encode() { Object encode() {
@ -92,6 +93,7 @@ class MediaInfo {
pigeonMap['mediaMetadata'] = mediaMetadata == null ? null : mediaMetadata!.encode(); pigeonMap['mediaMetadata'] = mediaMetadata == null ? null : mediaMetadata!.encode();
pigeonMap['mediaTracks'] = mediaTracks; pigeonMap['mediaTracks'] = mediaTracks;
pigeonMap['streamDuration'] = streamDuration; pigeonMap['streamDuration'] = streamDuration;
pigeonMap['adBreakClips'] = adBreakClips;
pigeonMap['customDataAsJson'] = customDataAsJson; pigeonMap['customDataAsJson'] = customDataAsJson;
return pigeonMap; return pigeonMap;
} }
@ -109,6 +111,7 @@ class MediaInfo {
: null : null
..mediaTracks = (pigeonMap['mediaTracks'] as List<Object?>?)?.cast<MediaTrack?>() ..mediaTracks = (pigeonMap['mediaTracks'] as List<Object?>?)?.cast<MediaTrack?>()
..streamDuration = pigeonMap['streamDuration'] as int? ..streamDuration = pigeonMap['streamDuration'] as int?
..adBreakClips = (pigeonMap['adBreakClips'] as List<Object?>?)?.cast<AdBreakClipInfo?>()
..customDataAsJson = pigeonMap['customDataAsJson'] as String?; ..customDataAsJson = pigeonMap['customDataAsJson'] as String?;
} }
} }
@ -238,6 +241,46 @@ class AdBreakStatus {
} }
} }
class AdBreakClipInfo {
String? id;
String? title;
String? contentId;
String? contentUrl;
String? clickThroughUrl;
int? durationMs;
String? imageUrl;
String? mimeType;
int? whenSkippableMs;
Object encode() {
final Map<Object?, Object?> pigeonMap = <Object?, Object?>{};
pigeonMap['id'] = id;
pigeonMap['title'] = title;
pigeonMap['contentId'] = contentId;
pigeonMap['contentUrl'] = contentUrl;
pigeonMap['clickThroughUrl'] = clickThroughUrl;
pigeonMap['durationMs'] = durationMs;
pigeonMap['imageUrl'] = imageUrl;
pigeonMap['mimeType'] = mimeType;
pigeonMap['whenSkippableMs'] = whenSkippableMs;
return pigeonMap;
}
static AdBreakClipInfo decode(Object message) {
final Map<Object?, Object?> pigeonMap = message as Map<Object?, Object?>;
return AdBreakClipInfo()
..id = pigeonMap['id'] as String?
..title = pigeonMap['title'] as String?
..contentId = pigeonMap['contentId'] as String?
..contentUrl = pigeonMap['contentUrl'] as String?
..clickThroughUrl = pigeonMap['clickThroughUrl'] as String?
..durationMs = pigeonMap['durationMs'] as int?
..imageUrl = pigeonMap['imageUrl'] as String?
..mimeType = pigeonMap['mimeType'] as String?
..whenSkippableMs = pigeonMap['whenSkippableMs'] as int?;
}
}
class CastDevice { class CastDevice {
String? deviceId; String? deviceId;
String? friendlyName; String? friendlyName;
@ -283,34 +326,38 @@ class _CastHostApiCodec extends StandardMessageCodec {
const _CastHostApiCodec(); const _CastHostApiCodec();
@override @override
void writeValue(WriteBuffer buffer, Object? value) { void writeValue(WriteBuffer buffer, Object? value) {
if (value is CastDevice) { if (value is AdBreakClipInfo) {
buffer.putUint8(128); buffer.putUint8(128);
writeValue(buffer, value.encode()); writeValue(buffer, value.encode());
} else } else
if (value is CastMessage) { if (value is CastDevice) {
buffer.putUint8(129); buffer.putUint8(129);
writeValue(buffer, value.encode()); writeValue(buffer, value.encode());
} else } else
if (value is MediaInfo) { if (value is CastMessage) {
buffer.putUint8(130); buffer.putUint8(130);
writeValue(buffer, value.encode()); writeValue(buffer, value.encode());
} else } else
if (value is MediaLoadRequestData) { if (value is MediaInfo) {
buffer.putUint8(131); buffer.putUint8(131);
writeValue(buffer, value.encode()); writeValue(buffer, value.encode());
} else } else
if (value is MediaMetadata) { if (value is MediaLoadRequestData) {
buffer.putUint8(132); buffer.putUint8(132);
writeValue(buffer, value.encode()); writeValue(buffer, value.encode());
} else } else
if (value is MediaTrack) { if (value is MediaMetadata) {
buffer.putUint8(133); buffer.putUint8(133);
writeValue(buffer, value.encode()); writeValue(buffer, value.encode());
} else } else
if (value is WebImage) { if (value is MediaTrack) {
buffer.putUint8(134); buffer.putUint8(134);
writeValue(buffer, value.encode()); writeValue(buffer, value.encode());
} else } else
if (value is WebImage) {
buffer.putUint8(135);
writeValue(buffer, value.encode());
} else
{ {
super.writeValue(buffer, value); super.writeValue(buffer, value);
} }
@ -319,24 +366,27 @@ class _CastHostApiCodec extends StandardMessageCodec {
Object? readValueOfType(int type, ReadBuffer buffer) { Object? readValueOfType(int type, ReadBuffer buffer) {
switch (type) { switch (type) {
case 128: case 128:
return CastDevice.decode(readValue(buffer)!); return AdBreakClipInfo.decode(readValue(buffer)!);
case 129: case 129:
return CastMessage.decode(readValue(buffer)!); return CastDevice.decode(readValue(buffer)!);
case 130: case 130:
return MediaInfo.decode(readValue(buffer)!); return CastMessage.decode(readValue(buffer)!);
case 131: case 131:
return MediaLoadRequestData.decode(readValue(buffer)!); return MediaInfo.decode(readValue(buffer)!);
case 132: case 132:
return MediaMetadata.decode(readValue(buffer)!); return MediaLoadRequestData.decode(readValue(buffer)!);
case 133: case 133:
return MediaTrack.decode(readValue(buffer)!); return MediaMetadata.decode(readValue(buffer)!);
case 134: case 134:
return MediaTrack.decode(readValue(buffer)!);
case 135:
return WebImage.decode(readValue(buffer)!); return WebImage.decode(readValue(buffer)!);
default: default:
@ -614,34 +664,38 @@ class _CastFlutterApiCodec extends StandardMessageCodec {
const _CastFlutterApiCodec(); const _CastFlutterApiCodec();
@override @override
void writeValue(WriteBuffer buffer, Object? value) { void writeValue(WriteBuffer buffer, Object? value) {
if (value is AdBreakStatus) { if (value is AdBreakClipInfo) {
buffer.putUint8(128); buffer.putUint8(128);
writeValue(buffer, value.encode()); writeValue(buffer, value.encode());
} else } else
if (value is CastMessage) { if (value is AdBreakStatus) {
buffer.putUint8(129); buffer.putUint8(129);
writeValue(buffer, value.encode()); writeValue(buffer, value.encode());
} else } else
if (value is MediaInfo) { if (value is CastMessage) {
buffer.putUint8(130); buffer.putUint8(130);
writeValue(buffer, value.encode()); writeValue(buffer, value.encode());
} else } else
if (value is MediaMetadata) { if (value is MediaInfo) {
buffer.putUint8(131); buffer.putUint8(131);
writeValue(buffer, value.encode()); writeValue(buffer, value.encode());
} else } else
if (value is MediaStatus) { if (value is MediaMetadata) {
buffer.putUint8(132); buffer.putUint8(132);
writeValue(buffer, value.encode()); writeValue(buffer, value.encode());
} else } else
if (value is MediaTrack) { if (value is MediaStatus) {
buffer.putUint8(133); buffer.putUint8(133);
writeValue(buffer, value.encode()); writeValue(buffer, value.encode());
} else } else
if (value is WebImage) { if (value is MediaTrack) {
buffer.putUint8(134); buffer.putUint8(134);
writeValue(buffer, value.encode()); writeValue(buffer, value.encode());
} else } else
if (value is WebImage) {
buffer.putUint8(135);
writeValue(buffer, value.encode());
} else
{ {
super.writeValue(buffer, value); super.writeValue(buffer, value);
} }
@ -650,24 +704,27 @@ class _CastFlutterApiCodec extends StandardMessageCodec {
Object? readValueOfType(int type, ReadBuffer buffer) { Object? readValueOfType(int type, ReadBuffer buffer) {
switch (type) { switch (type) {
case 128: case 128:
return AdBreakStatus.decode(readValue(buffer)!); return AdBreakClipInfo.decode(readValue(buffer)!);
case 129: case 129:
return CastMessage.decode(readValue(buffer)!); return AdBreakStatus.decode(readValue(buffer)!);
case 130: case 130:
return MediaInfo.decode(readValue(buffer)!); return CastMessage.decode(readValue(buffer)!);
case 131: case 131:
return MediaMetadata.decode(readValue(buffer)!); return MediaInfo.decode(readValue(buffer)!);
case 132: case 132:
return MediaStatus.decode(readValue(buffer)!); return MediaMetadata.decode(readValue(buffer)!);
case 133: case 133:
return MediaTrack.decode(readValue(buffer)!); return MediaStatus.decode(readValue(buffer)!);
case 134: case 134:
return MediaTrack.decode(readValue(buffer)!);
case 135:
return WebImage.decode(readValue(buffer)!); return WebImage.decode(readValue(buffer)!);
default: default:

View file

@ -19,6 +19,8 @@ class MediaInfo {
List<MediaTrack?>? mediaTracks; List<MediaTrack?>? mediaTracks;
int? streamDuration; int? streamDuration;
List<AdBreakClipInfo?>? adBreakClips;
/// String containing a json object /// String containing a json object
String? customDataAsJson; String? customDataAsJson;
} }
@ -239,6 +241,18 @@ class AdBreakStatus {
int? whenSkippableMs; int? whenSkippableMs;
} }
class AdBreakClipInfo {
String? id;
String? title;
String? contentId;
String? contentUrl;
String? clickThroughUrl;
int? durationMs;
String? imageUrl;
String? mimeType;
int? whenSkippableMs;
}
//#endregion //#endregion
class CastDevice { class CastDevice {