|
|
|
@ -25,20 +25,20 @@ namespace Emby.Server.Implementations.LiveTv.Listings
|
|
|
|
|
public class XmlTvListingsProvider : IListingsProvider
|
|
|
|
|
{
|
|
|
|
|
private readonly IServerConfigurationManager _config;
|
|
|
|
|
private readonly IHttpClient _httpClient;
|
|
|
|
|
private readonly IHttpClientFactory _httpClientFactory;
|
|
|
|
|
private readonly ILogger<XmlTvListingsProvider> _logger;
|
|
|
|
|
private readonly IFileSystem _fileSystem;
|
|
|
|
|
private readonly IZipClient _zipClient;
|
|
|
|
|
|
|
|
|
|
public XmlTvListingsProvider(
|
|
|
|
|
IServerConfigurationManager config,
|
|
|
|
|
IHttpClient httpClient,
|
|
|
|
|
IHttpClientFactory httpClientFactory,
|
|
|
|
|
ILogger<XmlTvListingsProvider> logger,
|
|
|
|
|
IFileSystem fileSystem,
|
|
|
|
|
IZipClient zipClient)
|
|
|
|
|
{
|
|
|
|
|
_config = config;
|
|
|
|
|
_httpClient = httpClient;
|
|
|
|
|
_httpClientFactory = httpClientFactory;
|
|
|
|
|
_logger = logger;
|
|
|
|
|
_fileSystem = fileSystem;
|
|
|
|
|
_zipClient = zipClient;
|
|
|
|
@ -78,28 +78,11 @@ namespace Emby.Server.Implementations.LiveTv.Listings
|
|
|
|
|
|
|
|
|
|
Directory.CreateDirectory(Path.GetDirectoryName(cacheFile));
|
|
|
|
|
|
|
|
|
|
using (var res = await _httpClient.SendAsync(
|
|
|
|
|
new HttpRequestOptions
|
|
|
|
|
{
|
|
|
|
|
CancellationToken = cancellationToken,
|
|
|
|
|
Url = path,
|
|
|
|
|
DecompressionMethod = CompressionMethods.Gzip,
|
|
|
|
|
},
|
|
|
|
|
HttpMethod.Get).ConfigureAwait(false))
|
|
|
|
|
using (var stream = res.Content)
|
|
|
|
|
using (var fileStream = new FileStream(cacheFile, FileMode.CreateNew))
|
|
|
|
|
using var response = await _httpClientFactory.CreateClient(NamedClient.Default).GetAsync(path, cancellationToken).ConfigureAwait(false);
|
|
|
|
|
await using var stream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false);
|
|
|
|
|
await using (var fileStream = new FileStream(cacheFile, FileMode.CreateNew))
|
|
|
|
|
{
|
|
|
|
|
if (res.ContentHeaders.ContentEncoding.Contains("gzip"))
|
|
|
|
|
{
|
|
|
|
|
using (var gzStream = new GZipStream(stream, CompressionMode.Decompress))
|
|
|
|
|
{
|
|
|
|
|
await gzStream.CopyToAsync(fileStream, cancellationToken).ConfigureAwait(false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
await stream.CopyToAsync(fileStream, cancellationToken).ConfigureAwait(false);
|
|
|
|
|
}
|
|
|
|
|
await stream.CopyToAsync(fileStream, cancellationToken).ConfigureAwait(false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return UnzipIfNeeded(path, cacheFile);
|
|
|
|
|