Esempio n. 1
0
        public IEnumerable <Models.Sitemap> GenerateSitemaps(SitemapParams param)
        {
            if (string.IsNullOrWhiteSpace(param.BaseUrl))
            {
                throw new ArgumentException(GetMessageOfNullWhiteSpace(nameof(param.BaseUrl)), nameof(param));
            }
            if (string.IsNullOrWhiteSpace(param.Scope))
            {
                throw new ArgumentException(GetMessageOfNullWhiteSpace(nameof(param.Scope)), nameof(param));
            }
            if (param.Culture == null)
            {
                throw new ArgumentException(GetMessageOfNull(nameof(param.Culture)), nameof(param));
            }

            var iterationIndex = 1;
            var offset         = 0;

            do
            {
                var entries = EntryProvider.GetEntriesAsync(
                    param,
                    culture: param.Culture,
                    offset: offset,
                    count: NumberOfEntriesPerSitemap
                    ).Result;

                var isEntriesNotEnough = entries.Count() < NumberOfEntriesPerSitemap;

                if (entries.Any())
                {
                    yield return(new Models.Sitemap
                    {
                        Name = isEntriesNotEnough && iterationIndex == 1 ? GetSitemapName(param.Culture) : GetSitemapName(param.Culture, iterationIndex),
                        Entries = entries.ToArray(),
                    });

                    offset         += NumberOfEntriesPerSitemap;
                    iterationIndex += 1;

                    if (isEntriesNotEnough)
                    {
                        break;
                    }
                }
                else
                {
                    break;
                }
            }while (true);
        }
        public IEnumerable <Models.Sitemap> GenerateSitemaps(SitemapParams sitemapParams)
        {
            Guard.NotNullOrWhiteSpace(sitemapParams.BaseUrl, nameof(sitemapParams.BaseUrl));
            Guard.NotNullOrWhiteSpace(sitemapParams.Scope, nameof(sitemapParams.Scope));
            Guard.NotNull(sitemapParams.Culture, nameof(sitemapParams.Culture));

            var iterationIndex = 1;
            var offset         = 0;

            do
            {
                var entries = EntryProvider.GetEntriesAsync(
                    sitemapParams,
                    culture: sitemapParams.Culture,
                    offset: offset,
                    count: NumberOfEntriesPerSitemap
                    ).Result;

                var isEntriesNotEnough = entries.Count() < NumberOfEntriesPerSitemap;

                if (entries.Any())
                {
                    yield return(new Models.Sitemap
                    {
                        Name = isEntriesNotEnough && iterationIndex == 1 ? GetSitemapName(sitemapParams.Culture) : GetSitemapName(sitemapParams.Culture, iterationIndex),
                        Entries = entries.ToArray(),
                    });

                    offset         += NumberOfEntriesPerSitemap;
                    iterationIndex += 1;

                    if (isEntriesNotEnough)
                    {
                        break;
                    }
                }
                else
                {
                    break;
                }
            }while (true);
        }