Skip to content

Commit deeba66

Browse files
committed
Code improvements following update to .NET 8
1 parent 232c956 commit deeba66

File tree

6 files changed

+16
-43
lines changed

6 files changed

+16
-43
lines changed

src/Common.MongoDb/DefaultMongoClientFactory.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ namespace Devpro.Common.MongoDb
66
{
77
public class DefaultMongoClientFactory : IMongoClientFactory
88
{
9-
public DefaultMongoClientFactory()
9+
static DefaultMongoClientFactory()
1010
{
1111
RegisterConventions();
1212
}
@@ -22,7 +22,7 @@ public virtual MongoClient CreateClient(string connectionString)
2222
/// <remarks>
2323
/// See https://github.com/mongodb/mongo-csharp-driver/tree/master/src/MongoDB.Bson/Serialization/Conventions
2424
/// </remarks>
25-
protected virtual void RegisterConventions()
25+
protected static void RegisterConventions()
2626
{
2727
var pack = new ConventionPack
2828
{

src/WebApi/ApplicationConfiguration.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,8 @@
22

33
namespace Devpro.TerraformBackend.WebApi
44
{
5-
public class ApplicationConfiguration : WebApiConfiguration
5+
public class ApplicationConfiguration(IConfigurationRoot configurationRoot) : WebApiConfiguration(configurationRoot)
66
{
7-
public ApplicationConfiguration(IConfigurationRoot configurationRoot)
8-
: base(configurationRoot)
9-
{
10-
}
11-
127
public MongoDbConfiguration MongoDbConfiguration =>
138
new()
149
{

src/WebApi/Authentication/BasicAuthenticationHandler.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ protected override Task<AuthenticateResult> HandleAuthenticateAsync()
1717
return Task.FromResult(AuthenticateResult.Fail("Missing Authorization header"));
1818
}
1919

20-
var authorizationHeader = Request.Headers["Authorization"].ToString();
20+
var authorizationHeader = Request.Headers.Authorization.ToString();
2121

2222
// raises an error if the authorization header is not Basic
2323
if (!authorizationHeader.StartsWith("Basic ", StringComparison.OrdinalIgnoreCase))
@@ -27,7 +27,7 @@ protected override Task<AuthenticateResult> HandleAuthenticateAsync()
2727

2828
// decrypts the authorization header and split out the client id/secret which is separated by the first ':'
2929
var authBase64Decoded = Encoding.UTF8.GetString(Convert.FromBase64String(authorizationHeader.Replace("Basic ", "", StringComparison.OrdinalIgnoreCase)));
30-
var authSplit = authBase64Decoded.Split(new[] { ':' }, 2);
30+
var authSplit = authBase64Decoded.Split([':'], 2);
3131

3232
// sends an error if no username and password
3333
if (authSplit.Length != 2)
@@ -55,10 +55,10 @@ protected override Task<AuthenticateResult> HandleAuthenticateAsync()
5555
};
5656

5757
// set the client ID as the name claim type
58-
var claimsPrincipal = new ClaimsPrincipal(new ClaimsIdentity(client, new[]
59-
{
58+
var claimsPrincipal = new ClaimsPrincipal(new ClaimsIdentity(client,
59+
[
6060
new Claim(ClaimTypes.Name, clientId)
61-
}));
61+
]));
6262

6363
// returns a success result
6464
return Task.FromResult(AuthenticateResult.Success(new AuthenticationTicket(claimsPrincipal, Scheme.Name)));

src/WebApi/Controllers/StateController.cs

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,8 @@ namespace Devpro.TerraformBackend.WebApi.Controllers
99
[Authorize]
1010
[ApiController]
1111
[Route("state")]
12-
public class StateController : ControllerBase
12+
public class StateController(IStateRepository stateRepository, IStateLockRepository stateLockRepository) : ControllerBase
1313
{
14-
private readonly IStateRepository _stateRepository;
15-
16-
private readonly IStateLockRepository _stateLockRepository;
17-
18-
public StateController(IStateRepository stateRepository, IStateLockRepository stateLockRepository)
19-
{
20-
_stateRepository = stateRepository;
21-
_stateLockRepository = stateLockRepository;
22-
}
23-
2414
/// <summary>
2515
/// Get Terraform state value.
2616
/// </summary>
@@ -32,7 +22,7 @@ public StateController(IStateRepository stateRepository, IStateLockRepository st
3222
public async Task<string> FindOne(string name, [FromQuery(Name = "ID")] string? lockId = "")
3323
{
3424
//TODO: check lock
35-
return await _stateRepository.FindOneAsync(name);
25+
return await stateRepository.FindOneAsync(name);
3626
}
3727

3828
/// <summary>
@@ -48,15 +38,15 @@ public async Task Create(string name, [FromBody] object input, [FromQuery(Name =
4838
{
4939
//TODO: check lock
5040
var jsonInput = JsonSerializer.Serialize(input);
51-
await _stateRepository.CreateAsync(name, jsonInput);
41+
await stateRepository.CreateAsync(name, jsonInput);
5242
}
5343

5444
[HttpGet("/locks", Name = "GetStateLocks")]
5545
[ProducesResponseType(200)]
5646
public async Task<List<StateLockModel>> FindAllLocks([FromQuery] string? name = "")
5747
{
5848
//TODO: only for admins
59-
return await _stateLockRepository.FindAllAsync();
49+
return await stateLockRepository.FindAllAsync();
6050
}
6151

6252
[HttpPost("{name}/lock", Name = "CreateStateLock")]
@@ -66,7 +56,7 @@ public async Task<List<StateLockModel>> FindAllLocks([FromQuery] string? name =
6656
public async Task Lock(string name, StateLockModel input)
6757
{
6858
input.Name = name;
69-
await _stateLockRepository.CreateAsync(input);
59+
await stateLockRepository.CreateAsync(input);
7060
}
7161

7262
[HttpDelete("{name}/lock", Name = "DeleteStateLock")]
@@ -76,7 +66,7 @@ public async Task Lock(string name, StateLockModel input)
7666
public async Task Unlock(string name, [FromBody] StateLockModel input)
7767
{
7868
input.Name = name;
79-
await _stateLockRepository.DeleteAsync(input);
69+
await stateLockRepository.DeleteAsync(input);
8070
}
8171
}
8272
}

src/WebApi/DependencyInjection/AuthenticationServiceCollectionExtensions.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,6 @@ public static class AuthenticationServiceCollectionExtensions
88
{
99
public static AuthenticationBuilder AddBasicAuthentication(this IServiceCollection services)
1010
{
11-
if (services == null)
12-
{
13-
throw new ArgumentNullException(nameof(services));
14-
}
15-
1611
return services.AddAuthentication()
1712
.AddScheme<AuthenticationSchemeOptions, BasicAuthenticationHandler>(BasicAuthenticationDefaults.AuthenticationScheme, null);
1813
}

test/WebApi.IntegrationTests/IntegrationTestBase.cs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,11 @@ namespace Devpro.TerraformBackend.WebApi.IntegrationTests
77
/// <summary>
88
/// See https://learn.microsoft.com/en-us/aspnet/core/test/integration-tests
99
/// </summary>
10-
public abstract class IntegrationTestBase : IClassFixture<WebApplicationFactory<Program>>
10+
public abstract class IntegrationTestBase(WebApplicationFactory<Program> factory) : IClassFixture<WebApplicationFactory<Program>>
1111
{
12-
private readonly WebApplicationFactory<Program> _factory;
13-
14-
protected IntegrationTestBase(WebApplicationFactory<Program> factory)
15-
{
16-
_factory = factory;
17-
}
18-
1912
protected HttpClient CreateClient()
2013
{
21-
return _factory.CreateClient();
14+
return factory.CreateClient();
2215
}
2316
}
2417
}

0 commit comments

Comments
 (0)