public override void Read(TagReadingInfo tagReadingInfo, Stream stream) { Reset(); _frameHeader.Read(tagReadingInfo, ref stream); int bytesLeft = _frameHeader.FrameSizeExcludingAdditions; if (bytesLeft > 1) { TextEncoding = (EncodingType)stream.Read1(ref bytesLeft); string priceString = ID3v2Utils.ReadString(EncodingType.ISO88591, stream, ref bytesLeft); if (!string.IsNullOrEmpty(priceString)) { foreach (string priceItem in priceString.Split('/')) { if (priceItem.Length > 3) { decimal price; string pricePart = priceItem.Substring(3, priceItem.Length - 3); if (decimal.TryParse(pricePart, System.Globalization.NumberStyles.Any, System.Globalization.NumberFormatInfo.InvariantInfo, out price)) { IPriceInformation priceInfo = new PriceInformation(); priceInfo.CurrencyCode = priceItem.Substring(0, 3); priceInfo.Price = price; _priceList.Add(priceInfo); } } } } if (bytesLeft > 0) { string validUntil = ID3v2Utils.ReadString(EncodingType.ISO88591, stream, 8); bytesLeft -= 8; if (validUntil.Length == 8) { validUntil = string.Format("{0}-{1}-{2}", validUntil.Substring(0, 4), validUntil.Substring(4, 2), validUntil.Substring(6, 2)); DateTime.TryParse(validUntil, out _validUntil); } if (bytesLeft > 0) { ContactUrl = ID3v2Utils.ReadString(EncodingType.ISO88591, stream, ref bytesLeft); if (bytesLeft > 0) { ReceivedAs = (ReceivedAs)stream.Read1(ref bytesLeft); NameOfSeller = ID3v2Utils.ReadString(TextEncoding, stream, ref bytesLeft); Description = ID3v2Utils.ReadString(TextEncoding, stream, ref bytesLeft); SellerLogoMimeType = ID3v2Utils.ReadString(EncodingType.ISO88591, stream, ref bytesLeft); if (bytesLeft > 0) { SellerLogo = stream.Read(bytesLeft); bytesLeft = 0; } } } } } if (bytesLeft != 0) { stream.Seek(bytesLeft, SeekOrigin.Current); } }
public void Read(TagReadingInfo tagReadingInfo, Stream stream) { this.Reset(); this.m_FrameHeader.Read(tagReadingInfo, ref stream); int num1 = this.m_FrameHeader.FrameSizeExcludingAdditions; if (num1 > 1) { this.TextEncoding = (EncodingType) Utils.ReadByte(stream, ref num1); string text1 = Utils.ReadString(EncodingType.ISO88591, stream, ref num1); if (!string.IsNullOrEmpty(text1)) { foreach (string text2 in text1.Split(new char[] { '/' })) { if (text2.Length > 3) { double num2; string text3 = text2.Substring(3, text2.Length - 3); if (double.TryParse(text3, NumberStyles.Any, NumberFormatInfo.InvariantInfo, out num2)) { IPriceInformation information1 = new PriceInformation(); information1.CurrencyCode = text2.Substring(0, 3); information1.Price = num2; this.m_PriceList.Add(information1); } } } } if (num1 > 0) { string text4 = Utils.ReadString(EncodingType.ISO88591, stream, 8); num1 -= 8; if (text4.Length == 8) { text4 = string.Format("{0}-{1}-{2}", text4.Substring(0, 4), text4.Substring(4, 2), text4.Substring(6, 2)); DateTime.TryParse(text4, out this.m_ValidUntil); } if (num1 > 0) { this.ContactUrl = Utils.ReadString(EncodingType.ISO88591, stream, ref num1); if (num1 > 0) { this.ReceivedAs = (IdSharp.Tagging.ID3v2.ReceivedAs) Utils.ReadByte(stream, ref num1); this.NameOfSeller = Utils.ReadString(this.TextEncoding, stream, ref num1); this.Description = Utils.ReadString(this.TextEncoding, stream, ref num1); this.SellerLogoMimeType = Utils.ReadString(EncodingType.ISO88591, stream, ref num1); if (num1 > 0) { this.SellerLogo = Utils.Read(stream, num1); num1 = 0; } } } } } if (num1 != 0) { stream.Seek((long) num1, SeekOrigin.Current); } }