aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/StartupWizardService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api/StartupWizardService.cs')
-rw-r--r--MediaBrowser.Api/StartupWizardService.cs78
1 files changed, 76 insertions, 2 deletions
diff --git a/MediaBrowser.Api/StartupWizardService.cs b/MediaBrowser.Api/StartupWizardService.cs
index 6ee8d3603..e9ac45fa2 100644
--- a/MediaBrowser.Api/StartupWizardService.cs
+++ b/MediaBrowser.Api/StartupWizardService.cs
@@ -3,8 +3,10 @@ using MediaBrowser.Controller;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Connect;
using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Controller.Net;
using MediaBrowser.Model.Configuration;
+using MediaBrowser.Model.LiveTv;
using ServiceStack;
using System;
using System.Linq;
@@ -49,13 +51,15 @@ namespace MediaBrowser.Api
private readonly IServerApplicationHost _appHost;
private readonly IUserManager _userManager;
private readonly IConnectManager _connectManager;
+ private readonly ILiveTvManager _liveTvManager;
- public StartupWizardService(IServerConfigurationManager config, IServerApplicationHost appHost, IUserManager userManager, IConnectManager connectManager)
+ public StartupWizardService(IServerConfigurationManager config, IServerApplicationHost appHost, IUserManager userManager, IConnectManager connectManager, ILiveTvManager liveTvManager)
{
_config = config;
_appHost = appHost;
_userManager = userManager;
_connectManager = connectManager;
+ _liveTvManager = liveTvManager;
}
public void Post(ReportStartupWizardComplete request)
@@ -67,6 +71,8 @@ namespace MediaBrowser.Api
_config.Configuration.EnableLibraryMetadataSubFolder = true;
_config.Configuration.EnableUserSpecificUserViews = true;
_config.Configuration.EnableCustomPathSubFolders = true;
+ _config.Configuration.DisableXmlSavers = true;
+ _config.Configuration.DisableStartupScan = true;
_config.SaveConfiguration();
}
@@ -82,7 +88,7 @@ namespace MediaBrowser.Api
public object Get(GetStartupConfiguration request)
{
- return new StartupConfiguration
+ var result = new StartupConfiguration
{
UICulture = _config.Configuration.UICulture,
EnableInternetProviders = _config.Configuration.EnableInternetProviders,
@@ -90,6 +96,22 @@ namespace MediaBrowser.Api
MetadataCountryCode = _config.Configuration.MetadataCountryCode,
PreferredMetadataLanguage = _config.Configuration.PreferredMetadataLanguage
};
+
+ var tvConfig = GetLiveTVConfiguration();
+
+ if (tvConfig.TunerHosts.Count > 0)
+ {
+ result.LiveTvTunerPath = tvConfig.TunerHosts[0].Url;
+ result.LiveTvTunerType = tvConfig.TunerHosts[0].Type;
+ }
+
+ if (tvConfig.ListingProviders.Count > 0)
+ {
+ result.LiveTvGuideProviderId = tvConfig.ListingProviders[0].Id;
+ result.LiveTvGuideProviderType = tvConfig.ListingProviders[0].Type;
+ }
+
+ return result;
}
public void Post(UpdateStartupConfiguration request)
@@ -100,6 +122,9 @@ namespace MediaBrowser.Api
_config.Configuration.MetadataCountryCode = request.MetadataCountryCode;
_config.Configuration.PreferredMetadataLanguage = request.PreferredMetadataLanguage;
_config.SaveConfiguration();
+
+ var task = UpdateTuners(request);
+ Task.WaitAll(task);
}
public object Get(GetStartupUser request)
@@ -140,6 +165,51 @@ namespace MediaBrowser.Api
return result;
}
+
+ private async Task UpdateTuners(UpdateStartupConfiguration request)
+ {
+ var config = GetLiveTVConfiguration();
+ var save = false;
+
+ if (string.IsNullOrWhiteSpace(request.LiveTvTunerPath) ||
+ string.IsNullOrWhiteSpace(request.LiveTvTunerType))
+ {
+ if (config.TunerHosts.Count > 0)
+ {
+ config.TunerHosts.Clear();
+ save = true;
+ }
+ }
+ else
+ {
+ if (!config.TunerHosts.Any(i => string.Equals(i.Type, request.LiveTvTunerType, StringComparison.OrdinalIgnoreCase) && string.Equals(i.Url, request.LiveTvTunerPath, StringComparison.OrdinalIgnoreCase)))
+ {
+ // Add tuner
+ await _liveTvManager.SaveTunerHost(new TunerHostInfo
+ {
+ IsEnabled = true,
+ Type = request.LiveTvTunerType,
+ Url = request.LiveTvTunerPath
+
+ }).ConfigureAwait(false);
+ }
+ }
+
+ if (save)
+ {
+ SaveLiveTVConfiguration(config);
+ }
+ }
+
+ private void SaveLiveTVConfiguration(LiveTvOptions config)
+ {
+ _config.SaveConfiguration("livetv", config);
+ }
+
+ private LiveTvOptions GetLiveTVConfiguration()
+ {
+ return _config.GetConfiguration<LiveTvOptions>("livetv");
+ }
}
public class StartupConfiguration
@@ -149,6 +219,10 @@ namespace MediaBrowser.Api
public bool SaveLocalMeta { get; set; }
public string MetadataCountryCode { get; set; }
public string PreferredMetadataLanguage { get; set; }
+ public string LiveTvTunerType { get; set; }
+ public string LiveTvTunerPath { get; set; }
+ public string LiveTvGuideProviderId { get; set; }
+ public string LiveTvGuideProviderType { get; set; }
}
public class StartupInfo