コード例 #1
0
        public FeedResult Feed(IndexRouteParams indexParams)
        {
            WebHelper.VerifyUserAgent(Request);

            var pageSize    = (indexParams.pageSize.HasValue ? Math.Min(indexParams.pageSize.Value, 30) : 30);
            var sortRule    = indexParams.sort ?? SongSortRule.Name;
            var timeFilter  = DateTimeUtils.ParseFromSimpleString(indexParams.since);
            var filter      = indexParams.filter;
            var songType    = indexParams.songType ?? SongType.Unspecified;
            var draftsOnly  = indexParams.draftsOnly ?? false;
            var matchMode   = indexParams.matchMode ?? NameMatchMode.Auto;
            var onlyWithPVs = indexParams.onlyWithPVs ?? false;
            var minScore    = indexParams.minScore ?? 0;

            var queryParams = new SongQueryParams(filter,
                                                  songType != SongType.Unspecified ? new[] { songType } : new SongType[] { },
                                                  0, pageSize, draftsOnly, false, matchMode, sortRule, false, false, null)
            {
                TimeFilter  = timeFilter,
                OnlyWithPVs = onlyWithPVs,
                ArtistId    = indexParams.artistId ?? 0,
                MinScore    = minScore,
            };

            var result = Service.FindWithThumbPreferNotNico(queryParams);

            var fac  = new SongFeedFactory();
            var feed = fac.Create(result.Items,
                                  VocaUriBuilder.CreateAbsolute(Url.Action("Index", indexParams)),
                                  song => RenderPartialViewToString("SongItem", song),
                                  song => Url.Action("Details", new { id = song.Id }));

            return(new FeedResult(new Atom10FeedFormatter(feed)));
        }
コード例 #2
0
        public async Task <FeedResult> Feed(IndexRouteParams indexParams)
        {
            WebHelper.VerifyUserAgent(Request);

            var pageSize    = (indexParams.pageSize.HasValue ? Math.Min(indexParams.pageSize.Value, 30) : 30);
            var sortRule    = indexParams.sort ?? SongSortRule.Name;
            var timeFilter  = DateTimeUtils.ParseFromSimpleString(indexParams.since);
            var filter      = indexParams.filter;
            var songType    = indexParams.songType ?? SongType.Unspecified;
            var matchMode   = indexParams.matchMode ?? NameMatchMode.Auto;
            var onlyWithPVs = indexParams.onlyWithPVs ?? false;
            var minScore    = indexParams.minScore ?? 0;

            var textQuery   = SearchTextQuery.Create(filter, matchMode);
            var queryParams = new SongQueryParams(textQuery,
                                                  songType != SongType.Unspecified ? new[] { songType } : new SongType[] { },
                                                  0, pageSize, false, sortRule, false, false, null)
            {
                ArtistParticipation =
                {
                    ArtistIds = !indexParams.artistId.HasValue || indexParams.artistId.Value == 0 ? null : new [] { indexParams.artistId.Value }
                },
                TimeFilter       = timeFilter,
                OnlyWithPVs      = onlyWithPVs,
                MinScore         = minScore,
                UserCollectionId = indexParams.userCollectionId ?? 0,
                FollowedByUserId = indexParams.followedByUserId ?? 0
            };

            var result = Service.FindWithThumbPreferNotNico(queryParams);

            var fac  = new SongFeedFactory();
            var feed = await fac.CreateAsync(result.Items,
                                             VocaUriBuilder.CreateAbsolute(Url.Action("Index", indexParams)),
                                             song => RenderPartialViewToStringAsync("SongItem", song),
                                             song => Url.Action("Details", new { id = song.Id }));

            return(new FeedResult(new Atom10FeedFormatter(feed)));
        }