Inheritance: IPriceInformation
Example #1
0
        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);
            }
        }
Example #2
0
 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);
     }
 }