added parser to config and register on startup

This commit is contained in:
2018-12-28 23:49:13 +01:00
parent 1df7934e8a
commit 85d07d12ab
4 changed files with 40 additions and 6 deletions

View File

@@ -2,7 +2,14 @@ namespace Tv7Playlist
{ {
public class AppConfig public class AppConfig
{ {
public enum SourceTypeEnum
{
M3U,
XSPF
}
public string TV7Url { get; set; } public string TV7Url { get; set; }
public SourceTypeEnum SourceType { get; set; }
public string UdpxyUrl { get; set; } public string UdpxyUrl { get; set; }
public string DownloadFileName { get; set; } public string DownloadFileName { get; set; }
} }

View File

@@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Builder; using System;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
@@ -7,6 +8,9 @@ using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Tv7Playlist.Core; using Tv7Playlist.Core;
using Tv7Playlist.Core.Parsers;
using Tv7Playlist.Core.Parsers.M3u;
using Tv7Playlist.Core.Parsers.Xspf;
using Tv7Playlist.Data; using Tv7Playlist.Data;
namespace Tv7Playlist namespace Tv7Playlist
@@ -33,10 +37,9 @@ namespace Tv7Playlist
options.MinimumSameSitePolicy = SameSiteMode.None; options.MinimumSameSitePolicy = SameSiteMode.None;
}); });
//TODO: Move to settings to make it configurable within docker. ConfigureParser(services);
var connection = "Data Source=playlist.db"; ConfigureDatabase(services);
services.AddDbContext<PlaylistContext>(options => options.UseSqlite(connection));
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
} }
@@ -68,6 +71,29 @@ namespace Tv7Playlist
}); });
} }
private void ConfigureParser(IServiceCollection services)
{
var type = Configuration.Get<AppConfig>().SourceType;
switch (type)
{
case AppConfig.SourceTypeEnum.M3U:
services.AddTransient<IPlaylistParser, M3UParser>();
break;
case AppConfig.SourceTypeEnum.XSPF:
services.AddTransient<IPlaylistParser, XspfParser>();
break;
default:
throw new ArgumentOutOfRangeException();
}
}
private static void ConfigureDatabase(IServiceCollection services)
{
//TODO: Move to settings to make it configurable within docker.
var connection = "Data Source=playlist.db";
services.AddDbContext<PlaylistContext>(options => options.UseSqlite(connection));
}
private void LogConfiguration() private void LogConfiguration()
{ {
var appConfig = Configuration.Get<AppConfig>(); var appConfig = Configuration.Get<AppConfig>();

View File

@@ -1,5 +1,5 @@
@{ @{
ViewData["Title"] = "Home Page"; ViewData["Title"] = "TV7 Playlist";
} }
<div class="text-center"> <div class="text-center">

View File

@@ -7,6 +7,7 @@
} }
}, },
"AllowedHosts": "*", "AllowedHosts": "*",
"SourceType": "M3U",
"TV7Url": "https://api.init7.net/tvchannels.m3u", "TV7Url": "https://api.init7.net/tvchannels.m3u",
"UdpxyUrl": "http://192.168.15.2:4022/udp", "UdpxyUrl": "http://192.168.15.2:4022/udp",
"DownloadFileName": "PlaylistTV7udpxy.m3u" "DownloadFileName": "PlaylistTV7udpxy.m3u"