using System; using System.Collections.Generic; using System.Linq; using Umbraco.Core.Models; namespace Umbraco.Core.Strings { /// /// Provides extension methods to IContentBase to get url segments. /// internal static class ContentBaseExtensions { /// /// Gets the url segment for a specified content and culture. /// /// The content. /// The culture. /// /// The url segment. public static string GetUrlSegment(this IContentBase content, IEnumerable urlSegmentProviders, string culture = null) { if (content == null) throw new ArgumentNullException(nameof(content)); if (urlSegmentProviders == null) throw new ArgumentNullException(nameof(urlSegmentProviders)); var url = urlSegmentProviders.Select(p => p.GetUrlSegment(content, culture)).FirstOrDefault(u => u != null); url = url ?? new DefaultUrlSegmentProvider().GetUrlSegment(content, culture); // be safe return url; } } }