|
|
|
@ -5,6 +5,7 @@ using System.Collections.Generic;
|
|
|
|
|
using System.Globalization;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Net.Http;
|
|
|
|
|
using System.Text.RegularExpressions;
|
|
|
|
|
using System.Threading;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
@ -19,13 +20,13 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
|
|
|
|
|
public class M3uParser
|
|
|
|
|
{
|
|
|
|
|
private readonly ILogger _logger;
|
|
|
|
|
private readonly IHttpClient _httpClient;
|
|
|
|
|
private readonly IHttpClientFactory _httpClientFactory;
|
|
|
|
|
private readonly IServerApplicationHost _appHost;
|
|
|
|
|
|
|
|
|
|
public M3uParser(ILogger logger, IHttpClient httpClient, IServerApplicationHost appHost)
|
|
|
|
|
public M3uParser(ILogger logger, IHttpClientFactory httpClientFactory, IServerApplicationHost appHost)
|
|
|
|
|
{
|
|
|
|
|
_logger = logger;
|
|
|
|
|
_httpClient = httpClient;
|
|
|
|
|
_httpClientFactory = httpClientFactory;
|
|
|
|
|
_appHost = appHost;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -51,13 +52,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
|
|
|
|
|
{
|
|
|
|
|
if (url.StartsWith("http", StringComparison.OrdinalIgnoreCase))
|
|
|
|
|
{
|
|
|
|
|
return _httpClient.Get(new HttpRequestOptions
|
|
|
|
|
{
|
|
|
|
|
Url = url,
|
|
|
|
|
CancellationToken = cancellationToken,
|
|
|
|
|
// Some data providers will require a user agent
|
|
|
|
|
UserAgent = _appHost.ApplicationUserAgent
|
|
|
|
|
});
|
|
|
|
|
return _httpClientFactory.CreateClient(NamedClient.Default)
|
|
|
|
|
.GetStreamAsync(url);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return Task.FromResult((Stream)File.OpenRead(url));
|
|
|
|
|