added first result table with containing the tracks (prototype)
This commit is contained in:
@@ -6,6 +6,6 @@ namespace Tv7Playlist.Core
|
||||
{
|
||||
public interface IPlaylistLoader
|
||||
{
|
||||
Task<IReadOnlyCollection<ParsedTrack>> LoadPlaylistFromUrl();
|
||||
Task<IReadOnlyCollection<ParsedTrack>> LoadPlaylistFromUrl(string url);
|
||||
}
|
||||
}
|
@@ -12,27 +12,23 @@ namespace Tv7Playlist.Core
|
||||
{
|
||||
private readonly ILogger<PlaylistLoader> _logger;
|
||||
private readonly IPlaylistParser _playlistParser;
|
||||
private readonly string _tv7Url;
|
||||
|
||||
public PlaylistLoader(ILogger<PlaylistLoader> logger, IAppConfig appConfig, IPlaylistParser playlistParser)
|
||||
public PlaylistLoader(ILogger<PlaylistLoader> logger, IPlaylistParser playlistParser)
|
||||
{
|
||||
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
|
||||
_playlistParser = playlistParser ?? throw new ArgumentNullException(nameof(playlistParser));
|
||||
|
||||
_tv7Url = appConfig.TV7Url;
|
||||
|
||||
}
|
||||
|
||||
public async Task<IReadOnlyCollection<ParsedTrack>> LoadPlaylistFromUrl()
|
||||
public async Task<IReadOnlyCollection<ParsedTrack>> LoadPlaylistFromUrl(string url)
|
||||
{
|
||||
using (var httpClient = new HttpClient())
|
||||
{
|
||||
_logger.LogInformation(LoggingEvents.Playlist, "Downloading playlist from {tv7url}", _tv7Url);
|
||||
_logger.LogInformation(LoggingEvents.Playlist, "Downloading playlist from {tv7url}", url);
|
||||
|
||||
var tv7Response = await httpClient.GetAsync(_tv7Url);
|
||||
var tv7Response = await httpClient.GetAsync(url);
|
||||
if (!tv7Response.IsSuccessStatusCode)
|
||||
{
|
||||
_logger.LogWarning(LoggingEvents.PlaylistNotFound, "Could not download playlist from {tv7url}. The StatusCode was: {StatusCode}", _tv7Url, tv7Response.StatusCode);
|
||||
_logger.LogWarning(LoggingEvents.PlaylistNotFound, "Could not download playlist from {tv7url}. The StatusCode was: {StatusCode}", url, tv7Response.StatusCode);
|
||||
}
|
||||
|
||||
return await ParseTracksFromResponseAsync(tv7Response);
|
||||
|
@@ -6,6 +6,7 @@ using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Tv7Playlist.Core;
|
||||
using Tv7Playlist.Models;
|
||||
|
||||
namespace Tv7Playlist.Controllers
|
||||
@@ -13,19 +14,22 @@ namespace Tv7Playlist.Controllers
|
||||
public class HomeController : Controller
|
||||
{
|
||||
private readonly ILogger<HomeController> _logger;
|
||||
private readonly IAppConfig _appConfig;
|
||||
private readonly IPlaylistLoader _playlistLoader;
|
||||
|
||||
public HomeController(ILogger<HomeController> logger, IConfiguration configuration)
|
||||
public HomeController(ILogger<HomeController> logger, IAppConfig appConfig, IPlaylistLoader playlistLoader)
|
||||
{
|
||||
if (configuration == null) throw new ArgumentNullException(nameof(configuration));
|
||||
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
|
||||
|
||||
var appConfig = configuration.Get<AppConfig>();
|
||||
|
||||
_appConfig = appConfig ?? throw new ArgumentNullException(nameof(appConfig));
|
||||
_playlistLoader = playlistLoader ?? throw new ArgumentNullException(nameof(playlistLoader));
|
||||
}
|
||||
|
||||
public IActionResult Index()
|
||||
public async Task<IActionResult> Index()
|
||||
{
|
||||
return View();
|
||||
var tracks = await _playlistLoader.LoadPlaylistFromUrl(_appConfig.TV7Url);
|
||||
var model = new HomeModel(tracks);
|
||||
|
||||
return View(model);
|
||||
}
|
||||
|
||||
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
|
||||
|
16
Tv7Playlist/Models/HomeModel.cs
Normal file
16
Tv7Playlist/Models/HomeModel.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Tv7Playlist.Core.Parsers;
|
||||
|
||||
namespace Tv7Playlist.Models
|
||||
{
|
||||
public class HomeModel
|
||||
{
|
||||
public IReadOnlyCollection<ParsedTrack> Tracks { get; }
|
||||
|
||||
public HomeModel(IReadOnlyCollection<ParsedTrack> tracks)
|
||||
{
|
||||
Tracks = tracks ?? throw new ArgumentNullException(nameof(tracks));
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,4 +1,4 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp2.2</TargetFramework>
|
||||
|
@@ -1,4 +1,5 @@
|
||||
@{
|
||||
@model HomeModel;
|
||||
@{
|
||||
ViewData["Title"] = "TV7 Playlist";
|
||||
}
|
||||
|
||||
@@ -6,3 +7,16 @@
|
||||
<h1 class="display-4">Welcome</h1>
|
||||
<p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
|
||||
</div>
|
||||
|
||||
<table>
|
||||
@{
|
||||
foreach (var track in Model.Tracks)
|
||||
{
|
||||
<tr>
|
||||
<td>@track.Id</td>
|
||||
<td>@track.Name</td>
|
||||
<td>@track.Url</td>
|
||||
</tr>
|
||||
}
|
||||
}
|
||||
</table>
|
Reference in New Issue
Block a user