コード例 #1
0
        public async Task <ListStreamsPage> ListStreams(
            Pattern pattern,
            int maxCount                        = 100,
            string continuationToken            = default,
            CancellationToken cancellationToken = default)
        {
            Ensure.That(maxCount).IsGt(0);

            Task <ListStreamsPage> ListNext(string @continue, CancellationToken ct)
            => ListStreams(pattern, maxCount, @continue, ct);

            var client = CreateClient();

            client = await client.RootAsync(
                continuationToken == default
                ?LinkFormatter.ListStreams(pattern, maxCount)
                : LinkFormatter.ListStreams(pattern, maxCount, continuationToken),
                cancellationToken);

            var resource = client.Current.First();

            var streamIds = from e in resource.Embedded
                            where e.Rel == Constants.Relations.Feed
                            from link in e.Links
                            where link.Rel == Constants.Relations.Feed
                            select link.Title;

            var listStreams = resource.Data <HalListStreams>();

            return(new ListStreamsPage(listStreams.ContinuationToken, streamIds.ToArray(), ListNext));
        }