@ -19,8 +19,7 @@ namespace Emby.Server.Implementations.LiveTv
public class LiveTvMediaSourceProvider : IMediaSourceProvider
{
// Do not use a pipe here because Roku http requests to the server will fail, without any explicit error message.
private const char StreamIdDelimeter = '_' ;
private const string StreamIdDelimeterString = "_" ;
private const char StreamIdDelimiter = '_' ;
private readonly ILiveTvManager _liveTvManager ;
private readonly ILogger < LiveTvMediaSourceProvider > _logger ;
@ -47,7 +46,7 @@ namespace Emby.Server.Implementations.LiveTv
}
}
return Task . FromResult <IEnumerable < MediaSourceInfo > > ( Array . Empty < MediaSourceInfo > ( ) ) ;
return Task . FromResult (Enumerable . Empty < MediaSourceInfo > ( ) ) ;
}
private async Task < IEnumerable < MediaSourceInfo > > GetMediaSourcesInternal ( BaseItem item , ActiveRecordingInfo activeRecordingInfo , CancellationToken cancellationToken )
@ -98,7 +97,7 @@ namespace Emby.Server.Implementations.LiveTv
source . Id ? ? string . Empty
} ;
source . OpenToken = string . Join ( StreamIdDelim eterString , openKeys ) ;
source . OpenToken = string . Join ( StreamIdDelim iter , openKeys ) ;
}
// Dummy this up so that direct play checks can still run
@ -116,7 +115,7 @@ namespace Emby.Server.Implementations.LiveTv
/// <inheritdoc />
public async Task < ILiveStream > OpenMediaSource ( string openToken , List < ILiveStream > currentLiveStreams , CancellationToken cancellationToken )
{
var keys = openToken . Split ( new [ ] { StreamIdDelimeter } , 3 ) ;
var keys = openToken . Split ( StreamIdDelimiter , 3 ) ;
var mediaSourceId = keys . Length > = 3 ? keys [ 2 ] : null ;
var info = await _liveTvManager . GetChannelStream ( keys [ 1 ] , mediaSourceId , currentLiveStreams , cancellationToken ) . ConfigureAwait ( false ) ;