Refactor downloader methods to use a dictionary for headers, has effect on Sources

This commit is contained in:
Thomas Haid
2025-05-15 21:07:45 +02:00
committed by Caelan
parent dd53fb3bc9
commit fec5b97a41
8 changed files with 77 additions and 51 deletions

View File

@@ -7,23 +7,21 @@ public class FakeDownloader : IFileDownloader
{
public string LastUrl { get; private set; }
public string LastLocalFile { get; private set; }
public string LastAuthHeader { get; private set; }
public string LastAcceptHeader { get; private set; }
public IDictionary<string, string>? LastHeaders { get; private set; }
public byte[] MockedResponseBytes { get; set; } = [];
public bool WriteMockLocalFile { get; set; } = false;
public Task<byte[]> DownloadBytes(string url, string auth, string acc, double timeout = 30)
public Task<byte[]> DownloadBytes(string url, IDictionary<string, string> headers, double timeout = 30)
{
LastUrl = url;
LastAuthHeader = auth;
LastAcceptHeader = acc;
LastHeaders = headers;
return Task.FromResult(MockedResponseBytes);
}
public async Task DownloadFile(string url, string targetFile, Action<int> progress, string auth, string acc, double timeout, CancellationToken token)
public async Task DownloadFile(string url, string targetFile, Action<int> progress, IDictionary<string, string> headers, double timeout = 30, CancellationToken token = default)
{
LastLocalFile = targetFile;
var resp = await DownloadBytes(url, auth, acc);
var resp = await DownloadBytes(url, headers);
progress?.Invoke(25);
progress?.Invoke(50);
progress?.Invoke(75);
@@ -32,8 +30,8 @@ public class FakeDownloader : IFileDownloader
File.WriteAllBytes(targetFile, resp);
}
public async Task<string> DownloadString(string url, string auth, string acc, double timeout = 30)
public async Task<string> DownloadString(string url, IDictionary<string, string> headers, double timeout = 30)
{
return Encoding.UTF8.GetString(await DownloadBytes(url, auth, acc));
return Encoding.UTF8.GetString(await DownloadBytes(url, headers));
}
}

View File

@@ -57,7 +57,7 @@ internal class FakeFixtureRepository : IFileDownloader
_releases = releases;
}
public Task<byte[]> DownloadBytes(string url, string authorization = null, string accept = null, double timeout = 30)
public Task<byte[]> DownloadBytes(string url, IDictionary<string, string> headers = null, double timeout = 30)
{
if (url.Contains($"/{_releasesName}?")) {
MemoryStream ms = new MemoryStream();
@@ -82,7 +82,7 @@ internal class FakeFixtureRepository : IFileDownloader
return Task.FromResult(File.ReadAllBytes(filePath));
}
public Task DownloadFile(string url, string targetFile, Action<int> progress, string authorization = null, string accept = null, double timeout = 30,
public Task DownloadFile(string url, string targetFile, Action<int> progress, IDictionary<string, string> headers = null, double timeout = 30,
CancellationToken token = default)
{
var rel = _releases.FirstOrDefault(r => url.EndsWith(r.OriginalFilename));
@@ -99,7 +99,7 @@ internal class FakeFixtureRepository : IFileDownloader
return Task.CompletedTask;
}
public Task<string> DownloadString(string url, string authorization = null, string accept = null, double timeout = 30)
public Task<string> DownloadString(string url, IDictionary<string, string> headers = null, double timeout = 30)
{
if (url.Contains($"/{_releasesName}?")) {
MemoryStream ms = new MemoryStream();