/// <summary> /// Gets all the available product lookups. /// </summary> /// <returns></returns> public virtual Task <List <Lookup> > GetLookupsAsync() { var cacheKey = new CacheKey(CacheConfigurationCategoryNames.Lookup); cacheKey.AppendKeyParts("productlookups"); // the request type uniquely identifies what type of lookup is being searched var request = new GetProductLookupsRequest(); //removed await because there is no logic after return from the call return(_cacheProvider.GetOrAddAsync(cacheKey, () => _overtureClient.SendAsync(request))); }
private static async Task <List <Lookup> > GetLookups(ProductDefinition productDef, IOvertureClient client) { var kvaLookupAttributes = productDef.VariantProperties.Where(vp => vp.IsKeyVariant && vp.DataType == PropertyDataType.Lookup) .Select(vp => vp.LookupDefinition.LookupName); var results = new List <Lookup>(); var lookupTasks = new List <Task <Lookup> >(); foreach (var name in kvaLookupAttributes.Distinct()) { var request = new GetProductLookupRequest { LookupName = name }; lookupTasks.Add(client.SendAsync(request)); } var lookupResults = await Task.WhenAll(lookupTasks).ConfigureAwait(false); foreach (var lookup in lookupResults) { if (lookup != null) { results.Add(lookup); } } return(results); }
public virtual async Task <IEnumerable <SitemapEntry> > GetEntriesAsync(SitemapParams sitemapParams, CultureInfo culture, int offset, int count) { Guard.NotNull(sitemapParams, nameof(sitemapParams)); Guard.NotNullOrWhiteSpace(sitemapParams.BaseUrl, $"{nameof(sitemapParams)}.{nameof(sitemapParams.BaseUrl)}"); Guard.NotNullOrWhiteSpace(sitemapParams.Scope, $"{nameof(sitemapParams)}.{nameof(sitemapParams.Scope)}"); Guard.NotNull(culture, nameof(culture)); var request = new SearchProductRequest { ScopeId = sitemapParams.Scope, CultureName = culture.Name, Keywords = "*", StartingIndex = offset, MaximumItems = count, VariantGroupingStrategy = SearchVariantGroupingStrategy.PerProduct, }; var response = await _overtureClient.SendAsync(request).ConfigureAwait(false); if (!response.Documents.Any()) { return(Enumerable.Empty <SitemapEntry>()); } return(CreateStandardSitemapEntries(sitemapParams, response.Documents, culture)); }
private static async Task <List <Lookup> > GetLookups(ProductDefinition productDef, IOvertureClient client) { var kvaLookupAttributes = productDef.VariantProperties .Where(vp => vp.IsKeyVariant && vp.DataType == PropertyDataType.Lookup) .Select(vp => vp.LookupDefinition.LookupName); var lookupTasks = new Dictionary <string, Task <Lookup> >(); foreach (var name in kvaLookupAttributes) { if (lookupTasks.ContainsKey(name)) { continue; } var request = new GetProductLookupRequest { LookupName = name }; lookupTasks.Add(name, client.SendAsync(request)); } var lookupResults = await Task.WhenAll(lookupTasks.Values).ConfigureAwait(false); return(lookupResults.Where(x => x != null).ToList()); }
/// <summary> /// Retrieve a country using its ISO code /// </summary> /// <param name="param"></param> /// <returns></returns> public async Task <Overture.ServiceModel.Country> RetrieveCountry(RetrieveCountryParam param) { if (string.IsNullOrWhiteSpace(param.IsoCode)) { throw new ArgumentException(GetMessageOfNullWhiteSpace(nameof(param.IsoCode)), nameof(param)); } var countryCacheKey = new CacheKey(CacheConfigurationCategoryNames.Country); countryCacheKey.AppendKeyParts(param.IsoCode); var result = await _cacheProvider.GetOrAddAsync(countryCacheKey, () => { var request = new GetCountryRequest { CountryIsoCode = param.IsoCode, IncludeRegions = true }; return(_overtureClient.SendAsync(request)); }).ConfigureAwait(false); return(result); }
public virtual async Task <IEnumerable <SitemapEntry> > GetEntriesAsync(SitemapParams param, CultureInfo culture, int offset, int count) { if (param == null) { throw new ArgumentNullException(nameof(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 (culture == null) { throw new ArgumentNullException(nameof(culture)); } var request = new SearchProductRequest { ScopeId = param.Scope, CultureName = culture.Name, Keywords = "*", StartingIndex = offset, MaximumItems = count, VariantGroupingStrategy = SearchVariantGroupingStrategy.PerProduct, }; var response = await _overtureClient.SendAsync(request).ConfigureAwait(false); if (!response.Documents.Any()) { return(Enumerable.Empty <SitemapEntry>()); } return(CreateStandardSitemapEntries(param, response.Documents, culture)); }
public Task <TResponse> SendAsync <TResponse>(IReturn <TResponse> requestDto) { return(InterceptAsync(() => _client.SendAsync(requestDto), requestDto)); }
public virtual Task <ProductSearchResult> GetProductInSameCategoryAsync(GetProductsInSameCategoryParam getProductsInSameCategoryParam) { var request = CreateProductInSameCategorySearchRequest(getProductsInSameCategoryParam); return(_overtureClient.SendAsync(request)); }