< Summary - Jellyfin

Information
Class: MediaBrowser.LocalMetadata.Parsers.BoxSetXmlParser
Assembly: MediaBrowser.LocalMetadata
File(s): /srv/git/jellyfin/MediaBrowser.LocalMetadata/Parsers/BoxSetXmlParser.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 30
Coverable lines: 30
Total lines: 104
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 16
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%210%
FetchDataFromXmlNode(...)0%2040%
FetchFromCollectionItemsNode(...)0%156120%

File(s)

/srv/git/jellyfin/MediaBrowser.LocalMetadata/Parsers/BoxSetXmlParser.cs

#LineLine coverage
 1using System.Collections.Generic;
 2using System.Xml;
 3using MediaBrowser.Controller.Entities;
 4using MediaBrowser.Controller.Entities.Movies;
 5using MediaBrowser.Controller.Providers;
 6using Microsoft.Extensions.Logging;
 7
 8namespace MediaBrowser.LocalMetadata.Parsers
 9{
 10    /// <summary>
 11    /// The box set xml parser.
 12    /// </summary>
 13    public class BoxSetXmlParser : BaseItemXmlParser<BoxSet>
 14    {
 15        /// <summary>
 16        /// Initializes a new instance of the <see cref="BoxSetXmlParser"/> class.
 17        /// </summary>
 18        /// <param name="logger">Instance of the <see cref="ILogger{BoxSetXmlParset}"/> interface.</param>
 19        /// <param name="providerManager">Instance of the <see cref="IProviderManager"/> interface.</param>
 20        public BoxSetXmlParser(ILogger<BoxSetXmlParser> logger, IProviderManager providerManager)
 021            : base(logger, providerManager)
 22        {
 023        }
 24
 25        /// <inheritdoc />
 26        protected override void FetchDataFromXmlNode(XmlReader reader, MetadataResult<BoxSet> itemResult)
 27        {
 028            switch (reader.Name)
 29            {
 30                case "CollectionItems":
 31
 032                    if (!reader.IsEmptyElement)
 33                    {
 034                        using (var subReader = reader.ReadSubtree())
 35                        {
 036                            FetchFromCollectionItemsNode(subReader, itemResult);
 037                        }
 38                    }
 39                    else
 40                    {
 041                        reader.Read();
 42                    }
 43
 044                    break;
 45
 46                default:
 047                    base.FetchDataFromXmlNode(reader, itemResult);
 48                    break;
 49            }
 050        }
 51
 52        private void FetchFromCollectionItemsNode(XmlReader reader, MetadataResult<BoxSet> item)
 53        {
 054            var list = new List<LinkedChild>();
 55
 056            reader.MoveToContent();
 057            reader.Read();
 58
 59            // Loop through each element
 060            while (!reader.EOF && reader.ReadState == ReadState.Interactive)
 61            {
 062                if (reader.NodeType == XmlNodeType.Element)
 63                {
 064                    switch (reader.Name)
 65                    {
 66                        case "CollectionItem":
 67                        {
 068                            if (!reader.IsEmptyElement)
 69                            {
 070                                using (var subReader = reader.ReadSubtree())
 71                                {
 072                                    var child = GetLinkedChild(subReader);
 73
 074                                    if (child is not null)
 75                                    {
 076                                        list.Add(child);
 77                                    }
 078                                }
 79                            }
 80                            else
 81                            {
 082                                reader.Read();
 83                            }
 84
 085                            break;
 86                        }
 87
 88                        default:
 89                        {
 090                            reader.Skip();
 091                            break;
 92                        }
 93                    }
 94                }
 95                else
 96                {
 097                    reader.Read();
 98                }
 99            }
 100
 0101            item.Item.LinkedChildren = list.ToArray();
 0102        }
 103    }
 104}