using System.Diagnostics; using System.Xml.Linq; namespace NzbDrone.Core.MetadataSource.Goodreads { /// /// Represents pagination information as returned by the Goodreads API. /// [DebuggerDisplay("{DebuggerDisplay,nq}")] public sealed class PaginationModel : GoodreadsResource { public override string ElementName => ""; /// /// The item the current page starts on. /// public int Start { get; private set; } /// /// The item the current page ends on. /// public int End { get; private set; } /// /// The total number of items in the paginated list. /// public int TotalItems { get; private set; } public override void Parse(XElement element) { // Search results have different pagination fields for some reason... if (element.Name == "search") { Start = element.ElementAsInt("results-start"); End = element.ElementAsInt("results-end"); TotalItems = element.ElementAsInt("total-results"); return; } var startAttribute = element.Attribute("start"); var endAttribute = element.Attribute("end"); var totalAttribute = element.Attribute("total"); if (startAttribute != null && endAttribute != null && totalAttribute != null) { int.TryParse(startAttribute.Value, out var start); int.TryParse(endAttribute.Value, out var end); int.TryParse(totalAttribute.Value, out var total); Start = start; End = end; TotalItems = total; } } } }