diff --git a/MavenNet.Tests/MavenNet.Tests.csproj b/MavenNet.Tests/MavenNet.Tests.csproj index bac2148..bb6c242 100644 --- a/MavenNet.Tests/MavenNet.Tests.csproj +++ b/MavenNet.Tests/MavenNet.Tests.csproj @@ -1,13 +1,13 @@ - netcoreapp3.1 + net6 - - - runtime; build; native; contentfiles; analyzers; buildtransitive + + + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/MavenNet.Tests/Test.cs b/MavenNet.Tests/Test.cs index 67c67a0..4446bfa 100644 --- a/MavenNet.Tests/Test.cs +++ b/MavenNet.Tests/Test.cs @@ -100,5 +100,35 @@ public async Task Test_GroupIds_Project_MAVENCENTRAL() Assert.True(project.Dependencies?.Any()); } - } + + [Fact] + public async Task Test_GroupIds_Project_MAVENCENTRAL_1() + { + var repo = MavenRepository.FromMavenCentral(); + MavenRepository.HttpClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36"); + await repo.Refresh("com.google.accompanist"); + + var project = await repo.GetProjectAsync("com.google.accompanist", "accompanist-appcompat-theme", "0.30.1"); + + Assert.True(project != null); + + Assert.True(project.Dependencies?.Any()); + } + + [Fact] + public async Task Test_GroupIds_Project_MAVENCENTRAL_2() + { + var repo = MavenRepository.FromMavenCentral(); + MavenRepository.HttpClient.DefaultRequestHeaders.Clear(); + await repo.Refresh("com.google.accompanist"); + + try + { + var project = await repo.GetProjectAsync("com.google.accompanist", "accompanist-appcompat-theme", "0.30.1"); + } + finally + { + } + } + } } diff --git a/MavenNet/MavenCentralRepository.cs b/MavenNet/MavenCentralRepository.cs index 032ab41..0494860 100644 --- a/MavenNet/MavenCentralRepository.cs +++ b/MavenNet/MavenCentralRepository.cs @@ -19,15 +19,16 @@ protected override string CombinePaths(params string[] parts) return string.Join(new string(PathSeparator, 1), parts); } - static readonly HttpClient http = new HttpClient(); - protected override async Task> GetArtifactsAsync(string groupId) { var artifacts = new List(); var url = $"http://search.maven.org/solrsearch/select?q=g:%22{groupId}%22&rows=100&wt=json"; - var data = await http.GetStringAsync(url); + // enable by default? + // HttpClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36"); + + var data = await HttpClient.GetStringAsync(url); var json = JObject.Parse(data); @@ -83,7 +84,7 @@ protected override Task OpenFileAsync(string path) { var url = $"https://repo1.maven.org/maven2/{path}"; - return http.GetStreamAsync(url); + return HttpClient.GetStreamAsync(url); } } } diff --git a/MavenNet/MavenNet.csproj b/MavenNet/MavenNet.csproj index 1328581..1e1b44c 100644 --- a/MavenNet/MavenNet.csproj +++ b/MavenNet/MavenNet.csproj @@ -28,7 +28,7 @@ - - + + diff --git a/MavenNet/MavenRepository.cs b/MavenNet/MavenRepository.cs index 988b8d9..971a116 100644 --- a/MavenNet/MavenRepository.cs +++ b/MavenNet/MavenRepository.cs @@ -4,11 +4,14 @@ using System.IO; using System.Threading.Tasks; using MavenNet.Models; +using System.Net.Http; namespace MavenNet { public abstract class MavenRepository : IMavenRepository { + public static readonly HttpClient HttpClient = new HttpClient(); + public static GoogleMavenRepository FromGoogle() { return new GoogleMavenRepository();