Skip to content

Commit bd15512

Browse files
authored
Modernize codebase, update packages, improve OpenAPI (#295)
2 parents a952033 + e09bbaa commit bd15512

File tree

10 files changed

+186
-128
lines changed

10 files changed

+186
-128
lines changed

.github/workflows/publish.yml

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
name: Publish Tiny .NET Helpers on NuGet
22

33
permissions:
4-
contents: read
5-
packages: write
6-
actions: write
4+
contents: write
75

86
on:
97
push:
@@ -47,11 +45,11 @@ jobs:
4745
run: dotnet nuget push *.nupkg -k ${{ secrets.NUGET_API_KEY }} -s https://api.nuget.org/v3/index.json
4846

4947
- name: Create release
50-
uses: actions/create-release@v1
48+
uses: softprops/action-gh-release@v2
5149
env:
52-
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
50+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
5351
with:
5452
tag_name: v${{ steps.nbgv.outputs.NuGetPackageVersion }}
55-
release_name: ${{ env.RELEASE_NAME }} ${{ steps.nbgv.outputs.NuGetPackageVersion }}
53+
name: ${{ env.RELEASE_NAME }} ${{ steps.nbgv.outputs.NuGetPackageVersion }}
5654
draft: false
5755
prerelease: false

.github/workflows/publish_aspnetcore.yml

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
name: Publish Tiny Helpers for ASP.NET Core on NuGet
22

33
permissions:
4-
contents: read
5-
packages: write
6-
actions: write
4+
contents: write
75

86
on:
97
push:
@@ -48,11 +46,11 @@ jobs:
4846
run: dotnet nuget push *.nupkg -k ${{ secrets.NUGET_API_KEY }} -s https://api.nuget.org/v3/index.json
4947

5048
- name: Create release
51-
uses: actions/create-release@v1
49+
uses: softprops/action-gh-release@v2
5250
env:
53-
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
51+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
5452
with:
55-
tag_name: ${{ env.TAG_NAME }}_v${{ steps.nbgv.outputs.NuGetPackageVersion }}
56-
release_name: ${{ env.RELEASE_NAME }} ${{ steps.nbgv.outputs.NuGetPackageVersion }}
53+
tag_name: v${{ steps.nbgv.outputs.NuGetPackageVersion }}
54+
name: ${{ env.RELEASE_NAME }} ${{ steps.nbgv.outputs.NuGetPackageVersion }}
5755
draft: false
5856
prerelease: false

.github/workflows/publish_dapper.yml

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
name: Publish Tiny Helpers for Dapper on NuGet
22

33
permissions:
4-
contents: read
5-
packages: write
6-
actions: write
4+
contents: write
75

86
on:
97
push:
@@ -48,11 +46,11 @@ jobs:
4846
run: dotnet nuget push *.nupkg -k ${{ secrets.NUGET_API_KEY }} -s https://api.nuget.org/v3/index.json
4947

5048
- name: Create release
51-
uses: actions/create-release@v1
49+
uses: softprops/action-gh-release@v2
5250
env:
53-
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
51+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
5452
with:
55-
tag_name: ${{ env.TAG_NAME }}_v${{ steps.nbgv.outputs.NuGetPackageVersion }}
56-
release_name: ${{ env.RELEASE_NAME }} ${{ steps.nbgv.outputs.NuGetPackageVersion }}
53+
tag_name: v${{ steps.nbgv.outputs.NuGetPackageVersion }}
54+
name: ${{ env.RELEASE_NAME }} ${{ steps.nbgv.outputs.NuGetPackageVersion }}
5755
draft: false
5856
prerelease: false

.github/workflows/publish_ef.yml

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
name: Publish Tiny Helpers for Entity Framework Core on NuGet
22

33
permissions:
4-
contents: read
5-
packages: write
6-
actions: write
4+
contents: write
75

86
on:
97
push:
@@ -48,11 +46,11 @@ jobs:
4846
run: dotnet nuget push *.nupkg -k ${{ secrets.NUGET_API_KEY }} -s https://api.nuget.org/v3/index.json
4947

5048
- name: Create release
51-
uses: actions/create-release@v1
49+
uses: softprops/action-gh-release@v2
5250
env:
53-
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
51+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
5452
with:
55-
tag_name: ${{ env.TAG_NAME }}_v${{ steps.nbgv.outputs.NuGetPackageVersion }}
56-
release_name: ${{ env.RELEASE_NAME }} ${{ steps.nbgv.outputs.NuGetPackageVersion }}
53+
tag_name: v${{ steps.nbgv.outputs.NuGetPackageVersion }}
54+
name: ${{ env.RELEASE_NAME }} ${{ steps.nbgv.outputs.NuGetPackageVersion }}
5755
draft: false
5856
prerelease: false

samples/TinyHelpers.AspNetCore.Sample/Program.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,11 +96,11 @@
9696
app.UseRouting();
9797
app.UseRequestLocalization();
9898

99-
app.MapGet("/api/sample", () =>
99+
app.MapGet("/api/language", () =>
100100
{
101101
var language = Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName;
102-
return TypedResults.NoContent();
103-
});
102+
return TypedResults.Ok(new { Language = language });
103+
}).WithResponseDescription(StatusCodes.Status200OK, "The language of the server");
104104

105105
app.MapGet("/api/json-number-as-string", () =>
106106
{
@@ -120,6 +120,11 @@
120120

121121
app.MapGet("/api/status", () => new StatusResult { Status = Status.Closed });
122122

123+
app.MapPost("/api/201-created", () =>
124+
{
125+
return TypedResults.Created();
126+
}).WithLocationHeader();
127+
123128
app.Run();
124129

125130
public enum Environment

samples/TinyHelpers.AspNetCore.Sample/TinyHelpers.AspNetCore.Sample.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
</PropertyGroup>
88

99
<ItemGroup>
10-
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="10.0.1" />
10+
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="10.0.2" />
1111
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" Version="10.1.0" />
1212
</ItemGroup>
1313

src/TinyHelpers.AspNetCore/Extensions/ServiceCollectionExtensions.cs

Lines changed: 45 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -13,50 +13,62 @@ namespace TinyHelpers.AspNetCore.Extensions;
1313

1414
public static class ServiceCollectionExtensions
1515
{
16-
public static T? ConfigureAndGet<T>(this IServiceCollection services, IConfiguration configuration, string sectionName) where T : class
16+
extension(IServiceCollection services)
1717
{
18-
var section = configuration.GetSection(sectionName);
19-
var settings = section.Get<T>();
20-
services.Configure<T>(section);
21-
22-
return settings;
23-
}
18+
public T? ConfigureAndGet<T>(IConfiguration configuration, string sectionName) where T : class
19+
{
20+
var section = configuration.GetSection(sectionName);
21+
var settings = section.Get<T>();
22+
services.Configure<T>(section);
2423

25-
public static IServiceCollection AddRequestLocalization(this IServiceCollection services, params string[] cultures)
26-
=> services.AddRequestLocalization(cultures, null);
24+
return settings;
25+
}
2726

28-
public static IServiceCollection AddRequestLocalization(this IServiceCollection services, IEnumerable<string> cultures, Action<IList<IRequestCultureProvider>>? providersConfiguration)
29-
{
30-
var supportedCultures = cultures.Select(c => new CultureInfo(c)).ToList();
27+
public IServiceCollection AddRequestLocalization(params string[] cultures)
28+
=> services.AddRequestLocalization(cultures, null);
3129

32-
services.Configure<RequestLocalizationOptions>(options =>
30+
public IServiceCollection AddRequestLocalization(IEnumerable<string> cultures, Action<IList<IRequestCultureProvider>>? providersConfiguration)
3331
{
34-
options.SupportedCultures = supportedCultures;
35-
options.SupportedUICultures = supportedCultures;
36-
options.DefaultRequestCulture = new RequestCulture(supportedCultures.First());
37-
providersConfiguration?.Invoke(options.RequestCultureProviders);
38-
});
32+
var supportedCultures = cultures.Select(c => new CultureInfo(c)).ToList();
33+
34+
services.Configure<RequestLocalizationOptions>(options =>
35+
{
36+
options.SupportedCultures = supportedCultures;
37+
options.SupportedUICultures = supportedCultures;
38+
options.DefaultRequestCulture = new RequestCulture(supportedCultures.First());
39+
providersConfiguration?.Invoke(options.RequestCultureProviders);
40+
});
41+
42+
return services;
43+
}
44+
45+
public IServiceCollection Replace<TService, TImplementation>(ServiceLifetime lifetime = ServiceLifetime.Scoped)
46+
where TService : class
47+
where TImplementation : class, TService
48+
{
49+
services.Replace(new ServiceDescriptor(serviceType: typeof(TService), implementationType: typeof(TImplementation), lifetime));
3950

40-
return services;
41-
}
51+
return services;
52+
}
4253

43-
public static IServiceCollection Replace<TService, TImplementation>(this IServiceCollection services, ServiceLifetime lifetime = ServiceLifetime.Scoped)
44-
where TService : class
45-
where TImplementation : class, TService
46-
{
47-
services.Replace(new ServiceDescriptor(serviceType: typeof(TService), implementationType: typeof(TImplementation), lifetime));
54+
public IServiceCollection AddDefaultProblemDetails()
55+
{
56+
services.AddProblemDetails(options =>
57+
{
58+
options.CustomizeProblemDetails = context => context.UseDefaults();
59+
});
4860

49-
return services;
50-
}
61+
return services;
62+
}
5163

52-
public static IServiceCollection AddDefaultProblemDetails(this IServiceCollection services)
53-
{
54-
services.AddProblemDetails(options =>
64+
public IServiceCollection AddDefaultExceptionHandler()
5565
{
56-
options.CustomizeProblemDetails = context => context.UseDefaults();
57-
});
66+
// Ensures that the ProblemDetails service is registered.
67+
services.AddProblemDetails();
5868

59-
return services;
69+
services.AddExceptionHandler<DefaultExceptionHandler>();
70+
return services;
71+
}
6072
}
6173

6274
public static void UseDefaults(this ProblemDetailsContext context)
@@ -70,13 +82,4 @@ public static void UseDefaults(this ProblemDetailsContext context)
7082

7183
context.ProblemDetails.Extensions.TryAdd("traceId", Activity.Current?.Id ?? context.HttpContext.TraceIdentifier);
7284
}
73-
74-
public static IServiceCollection AddDefaultExceptionHandler(this IServiceCollection services)
75-
{
76-
// Ensures that the ProblemDetails service is registered.
77-
services.AddProblemDetails();
78-
79-
services.AddExceptionHandler<DefaultExceptionHandler>();
80-
return services;
81-
}
8285
}

0 commit comments

Comments
 (0)