using System; using System.Collections.Generic; using System.Globalization; 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 default url segment for a specified content. /// /// The content. /// /// The url segment. public static string GetUrlSegment(this IContentBase content, IEnumerable urlSegmentProviders) { if (content == null) throw new ArgumentNullException("content"); if (urlSegmentProviders == null) throw new ArgumentNullException("urlSegmentProviders"); var url = urlSegmentProviders.Select(p => p.GetUrlSegment(content)).FirstOrDefault(u => u != null); url = url ?? new DefaultUrlSegmentProvider().GetUrlSegment(content); // be safe return url; } /// /// Gets the url segment for a specified content and culture. /// /// The content. /// The culture. /// /// The url segment. public static string GetUrlSegment(this IContentBase content, CultureInfo culture, IEnumerable urlSegmentProviders) { if (content == null) throw new ArgumentNullException("content"); if (culture == null) throw new ArgumentNullException("culture"); if (urlSegmentProviders == null) throw new ArgumentNullException("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; } } }