コード例 #1
0
ファイル: TopicService.cs プロジェクト: MarcusTzaen/CNodeUwp
        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());
        }
コード例 #2
0
        /// <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);
        }