Skip to content

Commit a432109

Browse files
committed
Merge remote-tracking branch 'origin/main'
2 parents 46a105a + 977a2f3 commit a432109

File tree

4 files changed

+140
-12
lines changed

4 files changed

+140
-12
lines changed

Modrinth.Net.Test/Modrinth.Net.Test.csproj

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@
99
</PropertyGroup>
1010

1111
<ItemGroup>
12-
<PackageReference Include="Flurl" Version="3.0.7"/>
13-
<PackageReference Include="Flurl.Http" Version="3.2.4"/>
14-
<PackageReference Include="Microsoft.Extensions.Configuration" Version="7.0.0"/>
15-
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="7.0.0"/>
16-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.4.1"/>
17-
<PackageReference Include="NUnit" Version="3.13.3"/>
18-
<PackageReference Include="NUnit3TestAdapter" Version="4.3.1"/>
12+
<PackageReference Include="Flurl" Version="3.0.7" />
13+
<PackageReference Include="Flurl.Http" Version="3.2.4" />
14+
<PackageReference Include="Microsoft.Extensions.Configuration" Version="7.0.0" />
15+
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="7.0.0" />
16+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.4.1" />
17+
<PackageReference Include="NUnit" Version="3.13.3" />
18+
<PackageReference Include="NUnit3TestAdapter" Version="4.3.1" />
1919
<PackageReference Include="NUnit.Analyzers" Version="3.5.0">
2020
<PrivateAssets>all</PrivateAssets>
2121
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
@@ -27,11 +27,11 @@
2727
</ItemGroup>
2828

2929
<ItemGroup>
30-
<ProjectReference Include="..\Modrinth.Net\Modrinth.Net.csproj"/>
30+
<ProjectReference Include="..\Modrinth.Net\Modrinth.Net.csproj" />
3131
</ItemGroup>
3232

3333
<ItemGroup>
34-
<None Include="appsettings.json" CopyToOutputDirectory="Always"/>
34+
<None Include="appsettings.json" CopyToOutputDirectory="Always" />
3535
</ItemGroup>
3636

3737
</Project>

Modrinth.Net.Test/ModrinthApiTests/EndpointTests.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System.Reflection;
22
using Microsoft.Extensions.Configuration;
3+
using Modrinth.Client;
34

45
namespace Modrinth.Net.Test.ModrinthApiTests;
56

@@ -26,8 +27,14 @@ private static string GetToken()
2627
public void SetUp()
2728
{
2829
var token = GetToken();
29-
var userAgent = $"Zechiax/Modrinth.Net.Test/{Assembly.GetExecutingAssembly().GetName().Version}";
30-
_client = new ModrinthClient(url: ModrinthClient.StagingBaseUrl, userAgent: userAgent, token: token);
31-
_noAuthClient = new ModrinthClient(url: ModrinthClient.StagingBaseUrl, userAgent: userAgent);
30+
var userAgent = new UserAgent
31+
{
32+
GitHubUsername = "Zechiax",
33+
ProjectName = "Modrinth.Net.Test",
34+
ProjectVersion = Assembly.GetExecutingAssembly().GetName().Version?.ToString(),
35+
};
36+
37+
_client = new ModrinthClient(url: ModrinthClient.StagingBaseUrl, userAgent: userAgent.ToString(), token: token);
38+
_noAuthClient = new ModrinthClient(url: ModrinthClient.StagingBaseUrl, userAgent: userAgent.ToString());
3239
}
3340
}

Modrinth.Net.Test/UserAgentTests.cs

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
using Modrinth.Client;
2+
3+
namespace Modrinth.Net.Test;
4+
5+
[TestFixture]
6+
public class UserAgentTests
7+
{
8+
[Test]
9+
public void CreateFullUserAgent()
10+
{
11+
var userAgent = new UserAgent
12+
{
13+
ProjectName = "ProjectName",
14+
ProjectVersion = "1.0.0",
15+
GitHubUsername = "Username",
16+
Contact = "contact@contact.com"
17+
};
18+
19+
Assert.That(userAgent.ToString(), Is.EqualTo("Username/ProjectName/1.0.0 (contact@contact.com)"));
20+
}
21+
22+
[Test]
23+
public void CreateMinimalUserAgent()
24+
{
25+
var userAgent = new UserAgent
26+
{
27+
ProjectName = "ProjectName",
28+
ProjectVersion = "1.0.0",
29+
};
30+
31+
Assert.That(userAgent.ToString(), Is.EqualTo("ProjectName/1.0.0"));
32+
}
33+
34+
[Test]
35+
public void CreateUserAgentWithNoVersion()
36+
{
37+
var userAgent = new UserAgent
38+
{
39+
ProjectName = "ProjectName",
40+
};
41+
42+
Assert.That(userAgent.ToString(), Is.EqualTo("ProjectName"));
43+
}
44+
}

Modrinth.Net/Client/UserAgent.cs

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
using System.Text;
2+
3+
namespace Modrinth.Client;
4+
5+
/// <summary>
6+
/// Helper class for creating a user agent string for the Modrinth API client
7+
/// </summary>
8+
public class UserAgent
9+
{
10+
/// <summary>
11+
/// Name of the project
12+
/// </summary>
13+
public string? ProjectName { get; set; }
14+
/// <summary>
15+
/// Version of the project
16+
/// </summary>
17+
public string? ProjectVersion { get; set; }
18+
19+
/// <summary>
20+
/// Email or website of the project
21+
/// </summary>
22+
public string? Contact { get; set; }
23+
/// <summary>
24+
/// GitHub username of the project
25+
/// </summary>
26+
public string? GitHubUsername { get; set; }
27+
28+
/// <summary>
29+
/// Creates a user agent string based on provided information
30+
/// </summary>
31+
/// <returns></returns>
32+
public override string ToString()
33+
{
34+
// Needs checks for null
35+
var sb = new StringBuilder();
36+
37+
var before = false;
38+
if (GitHubUsername != null)
39+
{
40+
sb.Append(GitHubUsername);
41+
before = true;
42+
}
43+
44+
if (ProjectName != null)
45+
{
46+
if (before)
47+
{
48+
sb.Append('/');
49+
}
50+
sb.Append(ProjectName);
51+
before = true;
52+
}
53+
54+
if (ProjectVersion != null)
55+
{
56+
if (before)
57+
{
58+
sb.Append('/');
59+
}
60+
sb.Append(ProjectVersion);
61+
before = true;
62+
}
63+
64+
if (Contact != null)
65+
{
66+
if (before)
67+
{
68+
sb.Append(' ');
69+
}
70+
sb.Append('(');
71+
sb.Append(Contact);
72+
sb.Append(')');
73+
}
74+
75+
return sb.ToString();
76+
}
77+
}

0 commit comments

Comments
 (0)