diff --git a/src/FilterLists.Services/Implementations/TableService.cs b/src/FilterLists.Services/Implementations/TableService.cs index 0ec59704c..6702ffc41 100644 --- a/src/FilterLists.Services/Implementations/TableService.cs +++ b/src/FilterLists.Services/Implementations/TableService.cs @@ -1,5 +1,5 @@ -using System.Net.Http; -using System.Net.Http.Headers; +using System.IO; +using System.Net.Http; using System.Threading.Tasks; using FilterLists.Data.Repositories.Contracts; using FilterLists.Services.Contracts; @@ -36,6 +36,7 @@ public void UpdateTable(string tableName) //TODO: fetch CSV URL from db table const string csvUrl = "https://raw.githubusercontent.com/collinbarrett/FilterLists/master/data/List.csv"; + var file = FetchFile(csvUrl).Result; break; default: //TODO: throw invalid table exception @@ -50,9 +51,18 @@ public void UpdateTable(string tableName) /// string of file private static async Task FetchFile(string url) { - var httpClient = new HttpClient(); - httpClient.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("FilterLists", "1.0")); - return await httpClient.GetStringAsync(url); + var client = new HttpClient(); + var response = await client.GetAsync(url); + response.EnsureSuccessStatusCode(); + var path = Path.Combine(Directory.GetCurrentDirectory(), "csv"); + Directory.CreateDirectory(path); + var file = Path.Combine(path,"List.csv"); + using (var fileStream = new FileStream(file, FileMode.Create, FileAccess.Write, + FileShare.None)) + { + await response.Content.CopyToAsync(fileStream); + } + return file; } } } \ No newline at end of file