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))); }
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))); }
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); }