public async Task <DeliveryItemListingResponse <T> > GetItemsAsync <T>(IEnumerable <IQueryParameter> parameters)
        {
            var cacheTokens = new List <string> {
                KenticoCloudCacheHelper.CONTENT_ITEM_LISTING_TYPED_IDENTIFIER
            };

            cacheTokens.AddNonNullRange(KenticoCloudCacheHelper.GetIdentifiersFromParameters(parameters));

            return(await _cacheManager.GetOrCreateAsync(
                       cacheTokens,
                       () => _deliveryClient.GetItemsAsync <T>(parameters),
                       _previewDeliveryClient == null?(Func <Task <DeliveryItemListingResponse <T> > >) null : () => _previewDeliveryClient.GetItemsAsync <T>(parameters),
                       response => response.Items.Count <= 0,
                       _dependencyResolver.GetItemListingResponseDependencies));
        }
        /// <summary>
        /// Returns a content item.
        /// </summary>
        /// <param name="codename">The codename of a content item.</param>
        /// <param name="parameters">A collection of query parameters, for example for projection or depth of modular content.</param>
        /// <returns>The <see cref="DeliveryItemResponse"/> instance that contains the content item with the specified codename.</returns>
        public async Task <DeliveryItemResponse> GetItemAsync(string codename, IEnumerable <IQueryParameter> parameters)
        {
            var cacheTokens = new List <string> {
                KenticoCloudCacheHelper.CONTENT_ITEM_SINGLE_IDENTIFIER, codename
            };

            cacheTokens.AddNonNullRange(KenticoCloudCacheHelper.GetIdentifiersFromParameters(parameters));

            return(await _cacheManager.GetOrCreateAsync(
                       cacheTokens,
                       () => _deliveryClient.GetItemAsync(codename, parameters),
                       _previewDeliveryClient == null?(Func <Task <DeliveryItemResponse> >) null : () => _previewDeliveryClient.GetItemAsync(codename, parameters),
                       response => response == null,
                       _dependencyResolver.GetItemResponseDependencies));
        }
Exemple #3
0
        /// <summary>
        /// Extracts identifier sets from a single-item JSON response.
        /// </summary>
        /// <param name="response">The <see cref="JObject"/> response.</param>
        /// <returns>Identifiers of all formats of the item, its modular content items, taxonomies used in elements, underlying content type and eventually its elements (when present in the cache).</returns>
        public IEnumerable <CacheTokenPair> GetItemJsonResponseDependencies(JObject response)
        {
            var dependencies = new List <CacheTokenPair>();

            if (KenticoCloudCacheHelper.IsDeliveryItemJsonResponse(response))
            {
                dependencies.AddNonNullRange(GetItemDependencies(response[KenticoCloudCacheHelper.ITEM_IDENTIFIER]));

                foreach (var item in response[KenticoCloudCacheHelper.MODULAR_CONTENT_IDENTIFIER]?.Children())
                {
                    dependencies.AddNonNullRange(GetItemDependencies(item));
                }
            }

            return(dependencies.Distinct());
        }
Exemple #4
0
        /// <summary>
        /// Extracts identifier sets from a single-item response.
        /// </summary>
        /// <param name="response">The <see cref="DeliveryItemResponse"/> or <see cref="DeliveryItemResponse{T}"/>, either strongly-typed, or runtime-typed.</param>
        /// <returns>Identifiers of all formats of the item, its modular content items, taxonomies used in elements, underlying content type and eventually its elements (when present in the cache).</returns>
        public IEnumerable <CacheTokenPair> GetItemResponseDependencies(dynamic response)
        {
            var dependencies = new List <CacheTokenPair>();

            if (KenticoCloudCacheHelper.IsDeliveryItemResponse(response) && response?.Item != null)
            {
                dependencies.AddNonNullRange((IEnumerable <CacheTokenPair>)GetItemDependencies(response.Item));

                foreach (var item in response.LinkedItems)
                {
                    dependencies.AddNonNullRange((IEnumerable <CacheTokenPair>)GetItemDependencies(item));
                }
            }

            return(dependencies.Distinct());
        }
        /// <summary>
        /// Extracts identifier sets from a single-item JSON response.
        /// </summary>
        /// <param name="response">The <see cref="JObject"/> response.</param>
        /// <returns>Identifiers of all formats of the item, its linked items items, taxonomies used in elements, underlying content type and eventually its elements (when present in the cache).</returns>
        public IEnumerable <IdentifierSet> GetContentItemSingleJsonDependencies(JObject response)
        {
            var dependencies = new List <IdentifierSet>();

            if (KenticoCloudCacheHelper.IsDeliveryItemSingleJsonResponse(response))
            {
                dependencies.AddNonNullRange(GetContentItemDependencies(response[KenticoCloudCacheHelper.ITEM_IDENTIFIER]));

                foreach (var item in response[KenticoCloudCacheHelper.LINKED_ITEMS_IDENTIFIER]?.Children())
                {
                    dependencies.AddNonNullRange(GetContentItemDependencies(item));
                }
            }

            return(dependencies.Distinct());
        }
        /// <summary>
        /// Extracts identifier sets from an item listing response.
        /// </summary>
        /// <param name="response">The <see cref="DeliveryItemListingResponse"/> or <see cref="DeliveryItemListingResponse{T}"/>, either strongly-typed, or runtime-typed.</param>
        /// <returns>Identifiers of all formats of the items, their linked items items, taxonomies used in elements, underlying content types and eventually their elements (when present in the cache).</returns>
        public IEnumerable <IdentifierSet> GetContentItemListingDependencies(dynamic response)
        {
            var dependencies = new List <IdentifierSet>();

            if (KenticoCloudCacheHelper.IsDeliveryItemListingResponse(response))
            {
                foreach (dynamic item in response.Items)
                {
                    dependencies.AddNonNullRange((IEnumerable <IdentifierSet>)GetContentItemDependencies(item));
                }

                foreach (var item in response.LinkedItems)
                {
                    dependencies.AddNonNullRange((IEnumerable <IdentifierSet>)GetContentItemDependencies(item));
                }
            }

            return(dependencies.Distinct());
        }