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)); }
/// <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()); }
/// <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()); }