Skip to content
This repository was archived by the owner on Apr 11, 2024. It is now read-only.

Commit 9a17cfe

Browse files
committed
feat(frontend-blazor): read frontend configuration from host service
1 parent 9740132 commit 9a17cfe

14 files changed

Lines changed: 102 additions & 10 deletions

File tree

eSchool.sln

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Frontend.Blazor.Client", "s
3939
EndProject
4040
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Frontend.Blazor.Server", "src\Web\Frontend.Blazor\Frontend.Blazor.Server\Frontend.Blazor.Server.csproj", "{3BABD4D9-56A1-4BA3-B30C-30E6765AB389}"
4141
EndProject
42+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Frontend.Blazor.Shared", "src\Web\Frontend.Blazor\Frontend.Blazor.Shared\Frontend.Blazor.Shared.csproj", "{4EB86635-CF79-4D15-909E-C41C98B0B586}"
43+
EndProject
4244
Global
4345
GlobalSection(SolutionConfigurationPlatforms) = preSolution
4446
Debug|Any CPU = Debug|Any CPU
@@ -181,6 +183,18 @@ Global
181183
{3BABD4D9-56A1-4BA3-B30C-30E6765AB389}.Release|x64.Build.0 = Release|Any CPU
182184
{3BABD4D9-56A1-4BA3-B30C-30E6765AB389}.Release|x86.ActiveCfg = Release|Any CPU
183185
{3BABD4D9-56A1-4BA3-B30C-30E6765AB389}.Release|x86.Build.0 = Release|Any CPU
186+
{4EB86635-CF79-4D15-909E-C41C98B0B586}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
187+
{4EB86635-CF79-4D15-909E-C41C98B0B586}.Debug|Any CPU.Build.0 = Debug|Any CPU
188+
{4EB86635-CF79-4D15-909E-C41C98B0B586}.Debug|x64.ActiveCfg = Debug|Any CPU
189+
{4EB86635-CF79-4D15-909E-C41C98B0B586}.Debug|x64.Build.0 = Debug|Any CPU
190+
{4EB86635-CF79-4D15-909E-C41C98B0B586}.Debug|x86.ActiveCfg = Debug|Any CPU
191+
{4EB86635-CF79-4D15-909E-C41C98B0B586}.Debug|x86.Build.0 = Debug|Any CPU
192+
{4EB86635-CF79-4D15-909E-C41C98B0B586}.Release|Any CPU.ActiveCfg = Release|Any CPU
193+
{4EB86635-CF79-4D15-909E-C41C98B0B586}.Release|Any CPU.Build.0 = Release|Any CPU
194+
{4EB86635-CF79-4D15-909E-C41C98B0B586}.Release|x64.ActiveCfg = Release|Any CPU
195+
{4EB86635-CF79-4D15-909E-C41C98B0B586}.Release|x64.Build.0 = Release|Any CPU
196+
{4EB86635-CF79-4D15-909E-C41C98B0B586}.Release|x86.ActiveCfg = Release|Any CPU
197+
{4EB86635-CF79-4D15-909E-C41C98B0B586}.Release|x86.Build.0 = Release|Any CPU
184198
EndGlobalSection
185199
GlobalSection(SolutionProperties) = preSolution
186200
HideSolutionNode = FALSE
@@ -202,6 +216,7 @@ Global
202216
{0C00A596-0FE3-4FA6-B54B-FE2BE83371EF} = {AA9E7227-03DB-4D04-A7FB-E8FD09D4C719}
203217
{53F4E6F9-6B91-45F9-97F9-F6EFA0EBEFCE} = {0C00A596-0FE3-4FA6-B54B-FE2BE83371EF}
204218
{3BABD4D9-56A1-4BA3-B30C-30E6765AB389} = {0C00A596-0FE3-4FA6-B54B-FE2BE83371EF}
219+
{4EB86635-CF79-4D15-909E-C41C98B0B586} = {0C00A596-0FE3-4FA6-B54B-FE2BE83371EF}
205220
EndGlobalSection
206221
GlobalSection(ExtensibilityGlobals) = postSolution
207222
SolutionGuid = {E418719F-3193-403E-AF58-9BE9F94FD8BE}

src/ApiGateways/eSchool.GraphQL/Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ COPY "src/Web/WebStatus/WebStatus.csproj" "src/Web/WebStatus/WebStatus.csproj"
2121

2222
COPY "src/Web/Frontend.Blazor/Frontend.Blazor.Server/Frontend.Blazor.Server.csproj" "src/Web/Frontend.Blazor/Frontend.Blazor.Server/Frontend.Blazor.Server.csproj"
2323
COPY "src/Web/Frontend.Blazor/Frontend.Blazor.Client/Frontend.Blazor.Client.csproj" "src/Web/Frontend.Blazor/Frontend.Blazor.Client/Frontend.Blazor.Client.csproj"
24+
COPY "src/Web/Frontend.Blazor/Frontend.Blazor.Shared/Frontend.Blazor.Shared.csproj" "src/Web/Frontend.Blazor/Frontend.Blazor.Shared/Frontend.Blazor.Shared.csproj"
2425

2526
COPY "docker-compose.dcproj" "docker-compose.dcproj"
2627

src/Services/Enrolling/Enrolling.API/Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ COPY "src/Web/WebStatus/WebStatus.csproj" "src/Web/WebStatus/WebStatus.csproj"
2121

2222
COPY "src/Web/Frontend.Blazor/Frontend.Blazor.Server/Frontend.Blazor.Server.csproj" "src/Web/Frontend.Blazor/Frontend.Blazor.Server/Frontend.Blazor.Server.csproj"
2323
COPY "src/Web/Frontend.Blazor/Frontend.Blazor.Client/Frontend.Blazor.Client.csproj" "src/Web/Frontend.Blazor/Frontend.Blazor.Client/Frontend.Blazor.Client.csproj"
24+
COPY "src/Web/Frontend.Blazor/Frontend.Blazor.Shared/Frontend.Blazor.Shared.csproj" "src/Web/Frontend.Blazor/Frontend.Blazor.Shared/Frontend.Blazor.Shared.csproj"
2425

2526
COPY "docker-compose.dcproj" "docker-compose.dcproj"
2627

src/Web/Frontend.Blazor/Frontend.Blazor.Client/Frontend.Blazor.Client.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@
1515
<PackageReference Include="System.Net.Http.Json" Version="5.0.0" />
1616
</ItemGroup>
1717

18+
<ItemGroup>
19+
<ProjectReference Include="..\Frontend.Blazor.Shared\Frontend.Blazor.Shared.csproj" />
20+
</ItemGroup>
21+
1822
<ItemGroup>
1923
<ServiceWorker Include="wwwroot\service-worker.js" PublishedContent="wwwroot\service-worker.published.js" />
2024
</ItemGroup>

src/Web/Frontend.Blazor/Frontend.Blazor.Client/Program.cs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@
55
using System;
66
using System.Collections.Generic;
77
using System.Net.Http;
8+
using System.Net.Http.Json;
89
using System.Text;
910
using System.Threading.Tasks;
1011
using MudBlazor;
1112
using MudBlazor.Services;
13+
using OpenCodeFoundation.ESchool.Web.Frontend.Blazor.Shared;
1214

1315
namespace OpenCodeFoundation.ESchool.Web.Frontend.Blazor.Client
1416
{
@@ -19,6 +21,9 @@ public static async Task Main(string[] args)
1921
var builder = WebAssemblyHostBuilder.CreateDefault(args);
2022
builder.RootComponents.Add<App>("#app");
2123

24+
var settings = await LoadFrontendSettings(builder);
25+
builder.Services.AddSingleton(settings);
26+
2227
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
2328

2429
builder.Services.AddMudBlazorDialog();
@@ -27,5 +32,23 @@ public static async Task Main(string[] args)
2732

2833
await builder.Build().RunAsync();
2934
}
35+
36+
private static async Task<FrontendSettings> LoadFrontendSettings(WebAssemblyHostBuilder builder)
37+
{
38+
using var http = new HttpClient()
39+
{
40+
BaseAddress = new Uri(builder.HostEnvironment.BaseAddress)
41+
};
42+
43+
var settings = await http
44+
.GetFromJsonAsync<FrontendSettings>("appsettings");
45+
46+
if (settings is null)
47+
{
48+
throw new ArgumentNullException(nameof(settings));
49+
}
50+
51+
return settings;
52+
}
3053
}
3154
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
using System;
2+
using Microsoft.AspNetCore.Mvc;
3+
using Microsoft.Extensions.Options;
4+
using OpenCodeFoundation.ESchool.Web.Frontend.Blazor.Shared;
5+
6+
namespace OpenCodeFoundation.ESchool.Web.Frontend.Blazor.Server.Controllers
7+
{
8+
[ApiController]
9+
[Route("[controller]")]
10+
public class AppSettingsController
11+
: ControllerBase
12+
{
13+
private readonly FrontendSettings _settings;
14+
15+
public AppSettingsController(IOptions<FrontendSettings> options)
16+
{
17+
_settings = options is null
18+
? throw new ArgumentNullException(nameof(options))
19+
: options.Value;
20+
}
21+
22+
// GET
23+
public FrontendSettings Index()
24+
{
25+
return _settings;
26+
}
27+
}
28+
}

src/Web/Frontend.Blazor/Frontend.Blazor.Server/Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ COPY "src/Web/WebStatus/WebStatus.csproj" "src/Web/WebStatus/WebStatus.csproj"
2121

2222
COPY "src/Web/Frontend.Blazor/Frontend.Blazor.Server/Frontend.Blazor.Server.csproj" "src/Web/Frontend.Blazor/Frontend.Blazor.Server/Frontend.Blazor.Server.csproj"
2323
COPY "src/Web/Frontend.Blazor/Frontend.Blazor.Client/Frontend.Blazor.Client.csproj" "src/Web/Frontend.Blazor/Frontend.Blazor.Client/Frontend.Blazor.Client.csproj"
24+
COPY "src/Web/Frontend.Blazor/Frontend.Blazor.Shared/Frontend.Blazor.Shared.csproj" "src/Web/Frontend.Blazor/Frontend.Blazor.Shared/Frontend.Blazor.Shared.csproj"
2425

2526
COPY "docker-compose.dcproj" "docker-compose.dcproj"
2627

src/Web/Frontend.Blazor/Frontend.Blazor.Server/Frontend.Blazor.Server.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
<ItemGroup>
1515
<ProjectReference Include="..\Frontend.Blazor.Client\Frontend.Blazor.Client.csproj" />
16+
<ProjectReference Include="..\Frontend.Blazor.Shared\Frontend.Blazor.Shared.csproj" />
1617
</ItemGroup>
1718

18-
1919
</Project>

src/Web/Frontend.Blazor/Frontend.Blazor.Server/Program.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,5 @@
11
using Microsoft.AspNetCore.Hosting;
2-
using Microsoft.Extensions.Configuration;
32
using Microsoft.Extensions.Hosting;
4-
using Microsoft.Extensions.Logging;
5-
using System;
6-
using System.Collections.Generic;
7-
using System.Linq;
8-
using System.Threading.Tasks;
93

104
namespace OpenCodeFoundation.ESchool.Web.Frontend.Blazor.Server
115
{

src/Web/Frontend.Blazor/Frontend.Blazor.Server/Startup.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
using Microsoft.AspNetCore.Builder;
22
using Microsoft.AspNetCore.Hosting;
3-
using Microsoft.AspNetCore.ResponseCompression;
43
using Microsoft.Extensions.Configuration;
54
using Microsoft.Extensions.DependencyInjection;
65
using Microsoft.Extensions.Hosting;
7-
using System.Linq;
6+
using OpenCodeFoundation.ESchool.Web.Frontend.Blazor.Shared;
87

98
namespace OpenCodeFoundation.ESchool.Web.Frontend.Blazor.Server
109
{
@@ -21,6 +20,9 @@ public Startup(IConfiguration configuration)
2120
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
2221
public void ConfigureServices(IServiceCollection services)
2322
{
23+
services.Configure<FrontendSettings>(Configuration);
24+
25+
services.AddControllersWithViews();
2426
services.AddRazorPages();
2527
}
2628

@@ -45,6 +47,7 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
4547
app.UseEndpoints(endpoints =>
4648
{
4749
endpoints.MapRazorPages();
50+
endpoints.MapControllers();
4851
endpoints.MapFallbackToFile("index.html");
4952
});
5053
}

0 commit comments

Comments
 (0)