@ -492,6 +492,16 @@ namespace MediaBrowser.Api.LiveTv
public string ProviderId { get ; set ; }
}
[Route("/LiveTv/ChannelMappings")]
[Authenticated(AllowBeforeStartupWizard = true)]
public class SetChannelMapping
{
[ApiMember(Name = "Id", Description = "Provider id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
public string ProviderId { get ; set ; }
public string TunerChannelNumber { get ; set ; }
public string ProviderChannelNumber { get ; set ; }
}
public class ChannelMappingOptions
{
public List < TunerChannelMapping > TunerChannels { get ; set ; }
@ -574,11 +584,47 @@ namespace MediaBrowser.Api.LiveTv
return ToOptimizedResult ( result ) ;
}
public async Task < object > Post ( SetChannelMapping request )
{
var config = GetConfiguration ( ) ;
var listingsProviderInfo = config . ListingProviders . First ( i = > string . Equals ( request . ProviderId , i . Id , StringComparison . OrdinalIgnoreCase ) ) ;
listingsProviderInfo . ChannelMappings = listingsProviderInfo . ChannelMappings . Where ( i = > ! string . Equals ( i . Name , request . TunerChannelNumber , StringComparison . OrdinalIgnoreCase ) ) . ToArray ( ) ;
if ( ! string . Equals ( request . TunerChannelNumber , request . ProviderChannelNumber , StringComparison . OrdinalIgnoreCase ) )
{
var list = listingsProviderInfo . ChannelMappings . ToList ( ) ;
list . Add ( new NameValuePair
{
Name = request . TunerChannelNumber ,
Value = request . ProviderChannelNumber
} ) ;
listingsProviderInfo . ChannelMappings = list . ToArray ( ) ;
}
UpdateConfiguration ( config ) ;
var tunerChannels = await _liveTvManager . GetChannelsForListingsProvider ( request . ProviderId , CancellationToken . None )
. ConfigureAwait ( false ) ;
var providerChannels = await _liveTvManager . GetChannelsFromListingsProviderData ( request . ProviderId , CancellationToken . None )
. ConfigureAwait ( false ) ;
var mappings = listingsProviderInfo . ChannelMappings . ToList ( ) ;
var tunerChannelMappings =
tunerChannels . Select ( i = > GetTunerChannelMapping ( i , mappings , providerChannels ) ) . ToList ( ) ;
return tunerChannelMappings . First ( i = > string . Equals ( i . Number , request . TunerChannelNumber , StringComparison . OrdinalIgnoreCase ) ) ;
}
public async Task < object > Get ( GetChannelMappingOptions request )
{
var config = GetConfiguration ( ) ;
var listingProvider = config . ListingProviders . First ( i = > string . Equals ( request . ProviderId , i . Id , StringComparison . OrdinalIgnoreCase ) ) ;
var listingsProviderInfo = config . ListingProviders . First ( i = > string . Equals ( request . ProviderId , i . Id , StringComparison . OrdinalIgnoreCase ) ) ;
var listingsProviderName = _liveTvManager . ListingProviders . First ( i = > string . Equals ( i . Type , listingsProviderInfo . Type , StringComparison . OrdinalIgnoreCase ) ) . Name ;
var tunerChannels = await _liveTvManager . GetChannelsForListingsProvider ( request . ProviderId , CancellationToken . None )
. ConfigureAwait ( false ) ;
@ -586,7 +632,7 @@ namespace MediaBrowser.Api.LiveTv
var providerChannels = await _liveTvManager . GetChannelsFromListingsProviderData ( request . ProviderId , CancellationToken . None )
. ConfigureAwait ( false ) ;
var mappings = listing Provider. ChannelMappings . ToList ( ) ;
var mappings = listing s ProviderInfo . ChannelMappings . ToList ( ) ;
var result = new ChannelMappingOptions
{
@ -601,7 +647,7 @@ namespace MediaBrowser.Api.LiveTv
Mappings = mappings ,
ProviderName = "Schedules Direct"
ProviderName = listingsProviderName
} ;
return ToOptimizedResult ( result ) ;
@ -702,6 +748,11 @@ namespace MediaBrowser.Api.LiveTv
return _config . GetConfiguration < LiveTvOptions > ( "livetv" ) ;
}
private void UpdateConfiguration ( LiveTvOptions options )
{
_config . SaveConfiguration ( "livetv" , options ) ;
}
public async Task < object > Get ( GetLineups request )
{
var info = await _liveTvManager . GetLineups ( request . Type , request . Id , request . Country , request . Location ) . ConfigureAwait ( false ) ;