public async static Task <TopicDetailResponse> GetTopicDetailAsync(TopicDetailRequest request , CancellationToken cancellationToken = default(CancellationToken)) { string url = $"/v1/topic/{request.TopicId}?mdrender={request.NeedRendered.ToString().ToLowerInvariant()}"; var response = await ServiceHelper.Get <ApiResponse <TopicDetailResponse> >(url).ConfigureAwait(false); return(response.GetData()); }
/// <summary> /// /// </summary> /// <param name="message"></param> /// <returns></returns> public async Task <TopicDetailResponse> Handle(TopicDetailRequest message) { TopicDetailResponse response; string cacheKey = $"{CacheKeyPrefix}.{message.TopicId}"; // check if the value is in cache if (!_cache.TryGetValue(cacheKey, out response)) { var topic = await _topicRepository.Get(message.TopicId); var taggedChannelIds = await _tagRepository.SearchChannels(response.Topic.SearchTerms); var channels = await _channelRepository.GetAll( taggedChannelIds, 0, taggedChannelIds.Count, response.Topic.Language); var videos = await _videoRepository.GetByTags(response.Topic.SearchTerms, 25); response = new TopicDetailResponse( topic, videos, channels); _cache.Set( cacheKey, response, new MemoryCacheEntryOptions() .SetSlidingExpiration(TimeSpan.FromHours(1)) ); } return(response); }