Exemplo n.º 1
0
        public void Should_Map_YouTube_Streams_To_Streams()
        {
            var youTubeSearchResults = new YouTubeSearchResultsBuilder()
                                       .Add("video1", "test stream", "test channel", "channel1", "http://stream.thumbnail.url")
                                       .SetNextPageToken("nextPage")
                                       .Build();

            var videoDetails = new YouTubeVidoDetailResultsBuilder()
                               .Add("video1", 1)
                               .Build();

            var videoChannels = new YouTubeChannelResultsBuilder()
                                .Add("channel1", "http://channel.thumbnail")
                                .Build();

            var streams = new YouTubeStreamMapper(youTubeWebUrl)
                          .Map(youTubeSearchResults, videoDetails, videoChannels)
                          .GetOrElse(PlatformStreamsDto.Empty(StreamPlatform.YouTube));

            Assert.AreEqual(streams.Streams.First().StreamerName, "test channel");
            Assert.AreEqual(streams.Streams.First().StreamTitle, "test stream");
            Assert.AreEqual(streams.Streams.First().StreamerAvatarUrl, "http://channel.thumbnail");
            Assert.AreEqual(streams.Streams.First().StreamUrl, "http://youtube.com/watch?v=video1");
            Assert.AreEqual(streams.Streams.First().StreamThumbnailUrl, "http://stream.thumbnail.url");
            Assert.AreEqual(streams.Streams.First().IsLive, true);
            Assert.AreEqual(streams.Streams.First().Views, 1);
            Assert.AreEqual(streams.NextPageToken, "nextPage");
            Assert.AreEqual(streams.StreamPlatformName, StreamPlatform.YouTube);
        }
 public PlatformStreamsDto Map(
     MaybeResult <IEnumerable <DLiveStreamItemDto>, StreamProviderError> streamSearchResults,
     int pageSize,
     int pageOffset
     )
 {
     return(streamSearchResults.Select(streams =>
     {
         return new PlatformStreamsDto
         {
             StreamPlatformName = StreamPlatform.DLive,
             Streams = streams.Select(stream =>
             {
                 return new PlatformStreamDto
                 {
                     StreamTitle = stream.title,
                     StreamerName = stream.creator.displayName,
                     StreamThumbnailUrl = stream.thumbnailUrl,
                     StreamerAvatarUrl = stream.creator.avatar,
                     StreamUrl = $"{dliveWebUrl}/{stream.creator.displayName}",
                     IsLive = true,
                     Views = stream.watchingCount,
                 };
             }),
             NextPageToken = streams.Count() == pageSize ? (pageOffset + pageSize).ToString() : string.Empty
         };
     }).GetOrElse(PlatformStreamsDto.Empty(StreamPlatform.DLive)));
 }
Exemplo n.º 3
0
 public PlatformStreamsDto Map(
     MaybeResult <IEnumerable <TwitchStreamDto>, StreamProviderError> twitchStreamResults,
     int pageSize,
     int pageOffset
     )
 {
     return(twitchStreamResults.Select(streams =>
     {
         var nextPagToken = streams.Count() == pageSize ? (pageOffset + pageSize).ToString() : string.Empty;
         return new PlatformStreamsDto
         {
             StreamPlatformName = StreamPlatform.Twitch,
             Streams = streams.Select(stream => new PlatformStreamDto
             {
                 StreamTitle = stream.channel.status,
                 StreamerName = stream.channel.display_name,
                 StreamerAvatarUrl = stream.channel.logo,
                 StreamThumbnailUrl = stream.preview.medium,
                 StreamUrl = stream.channel.url,
                 IsLive = true,
                 Views = stream.viewers,
             }),
             NextPageToken = nextPagToken,
         };
     }).GetOrElse(PlatformStreamsDto.Empty(StreamPlatform.Twitch)));
 }
Exemplo n.º 4
0
        public void Should_Return_An_Empty_List_Of_Streams_When_No_Streams_Where_Returned_From_The_Streaming_Platform()
        {
            var youTubeSearchResults = new YouTubeSearchResultsBuilder().Build();
            var videoDetails         = new YouTubeVidoDetailResultsBuilder().Build();
            var videoChannels        = new YouTubeChannelResultsBuilder().Build();

            var streams = new YouTubeStreamMapper(youTubeWebUrl)
                          .Map(youTubeSearchResults, videoDetails, videoChannels)
                          .GetOrElse(PlatformStreamsDto.Empty(StreamPlatform.YouTube));

            Assert.IsTrue(streams.IsEmpty());
        }
        public async Task <PlatformStreamsDto> GetLiveStreams(StreamFilterOptions filterOptions, int pageSize, PageToken pageToken)
        {
            var liveVideosResult = await youTubeV3Api.SearchGamingVideos(
                filterOptions.GameName, VideoEventType.Live, VideoSortType.ViewCount, pageSize, pageToken);

            var streams = await liveVideosResult.ChainAsync(async videos =>
            {
                var videoIds   = videos.items.Select(v => v.id.videoId);
                var channelIds = videos.items.Select(v => v.snippet.channelId);

                var getVideoDetails  = youTubeV3Api.GetVideos(videoIds.ToArray());
                var getVideoChannels = youTubeV3Api.GetChannels(channelIds.ToArray());

                var videoDetailResults  = await getVideoDetails;
                var videoChannelResults = await getVideoChannels;

                return(streamMapper.Map(videos, videoDetailResults, videoChannelResults));
            });

            return(streams.GetOrElse(PlatformStreamsDto.Empty(StreamPlatformName)));
        }
 public static bool IsEmpty(this PlatformStreamsDto streams)
 {
     return(streams.Streams.Count() == 0);
 }