using System.Collections.Generic; using LeanCloud.Storage; namespace LeanCloud.Realtime { /// /// 视频消息 /// public class LCIMVideoMessage : LCIMFileMessage { /// /// 宽度 /// public int Width { get; private set; } /// /// 高度 /// public int Height { get; private set; } /// /// 时长 /// public double Duration { get; private set; } internal LCIMVideoMessage() { } public LCIMVideoMessage(LCFile file) : base(file) { } internal override Dictionary Encode() { Dictionary data = base.Encode(); Dictionary fileData = data[MessageFileKey] as Dictionary; Dictionary metaData = fileData[MessageDataMetaDataKey] as Dictionary; if (File.MetaData.TryGetValue(MessageDataMetaWidthKey, out object width)) { metaData[MessageDataMetaWidthKey] = width; } if (File.MetaData.TryGetValue(MessageDataMetaHeightKey, out object height)) { metaData[MessageDataMetaHeightKey] = height; } if (File.MetaData.TryGetValue(MessageDataMetaDurationKey, out object duration)) { metaData[MessageDataMetaDurationKey] = duration; } return data; } internal override void Decode(Dictionary msgData) { base.Decode(msgData); if (File.MetaData.TryGetValue(MessageDataMetaWidthKey, out object width) && int.TryParse(width as string, out int w)) { Width = w; } if (File.MetaData.TryGetValue(MessageDataMetaHeightKey, out object height) && int.TryParse(height as string, out int h)) { Height = h; } if (File.MetaData.TryGetValue(MessageDataMetaDurationKey, out object duration) && double.TryParse(duration as string, out double d)) { Duration = d; } } public override int MessageType => VideoMessageType; } }