Skip to content

Commit b484b7c

Browse files
authored
Genericize the Schulware stateless contract's app-facing wire strings (#99)
The provider-agnostic app speaks generic headers/fields; the plugin's internals and the plugin->SchulwareAPI hop stay Schulnetz. - Data headers: X-Schulware-Token -> X-Plugin-Token, X-Schulnetz-Base-Url -> X-Provider-Base-Url. - Stateless login/refresh body: schulnetzBaseUrl -> baseUrl.
1 parent ad3a303 commit b484b7c

4 files changed

Lines changed: 11 additions & 11 deletions

File tree

src/Schuly.Plugin.Schulware/Controllers/StatelessAuthController.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,11 @@ public class StatelessAuthController(
3535
public async Task<IActionResult> Login([FromBody] StatelessLoginRequest request)
3636
{
3737
var client = SchulwareApiClientFactory.Create(
38-
httpClientFactory, BaseUrl, request.SchulnetzBaseUrl);
38+
httpClientFactory, BaseUrl, request.BaseUrl);
3939

4040
var result = await client.Api.Authenticate.Login.PostAsync(new LoginRequestDto
4141
{
42-
SchulnetzBaseUrl = request.SchulnetzBaseUrl,
42+
SchulnetzBaseUrl = request.BaseUrl,
4343
Email = request.Email,
4444
Password = request.Password,
4545
TotpSecret = string.IsNullOrWhiteSpace(request.TotpSecret) ? null : request.TotpSecret,
@@ -74,7 +74,7 @@ public async Task<IActionResult> Refresh([FromBody] StatelessRefreshRequest requ
7474
var result = await client.Api.Authenticate.Refresh.PostAsync(
7575
new RefreshTokenRequestDto
7676
{
77-
SchulnetzBaseUrl = request.SchulnetzBaseUrl,
77+
SchulnetzBaseUrl = request.BaseUrl,
7878
UserAgent = request.UserAgent,
7979
ContextState = contextState,
8080
});

src/Schuly.Plugin.Schulware/Controllers/StatelessDataController.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ namespace Schuly.Plugin.Schulware.Controllers
1313
/// Stateless, account-free data proxy for the app's private mode. Fetches the
1414
/// caller's SchulwareAPI mobile data with their bearer token and returns it
1515
/// mapped to flat DTOs. Persists nothing. Credentials travel in headers:
16-
/// <c>X-Schulware-Token</c> (the SchulwareAPI access token) and
17-
/// <c>X-Schulnetz-Base-Url</c> (the school instance URL).
16+
/// <c>X-Plugin-Token</c> (the access token) and
17+
/// <c>X-Provider-Base-Url</c> (the school instance URL).
1818
/// </summary>
1919
[ApiController]
2020
[AllowAnonymous]
@@ -52,12 +52,12 @@ public Task<IActionResult> UserInfo() => ProxyAsync(async c =>
5252
/// </summary>
5353
private async Task<IActionResult> ProxyAsync<T>(Func<SchulwareApiClient, Task<T>> fetch)
5454
{
55-
var token = Request.Headers["X-Schulware-Token"].ToString();
56-
var schulnetzBaseUrl = Request.Headers["X-Schulnetz-Base-Url"].ToString();
55+
var token = Request.Headers["X-Plugin-Token"].ToString();
56+
var schulnetzBaseUrl = Request.Headers["X-Provider-Base-Url"].ToString();
5757
if (string.IsNullOrWhiteSpace(token))
58-
return BadRequest("Missing X-Schulware-Token header");
58+
return BadRequest("Missing X-Plugin-Token header");
5959
if (string.IsNullOrWhiteSpace(schulnetzBaseUrl))
60-
return BadRequest("Missing X-Schulnetz-Base-Url header");
60+
return BadRequest("Missing X-Provider-Base-Url header");
6161

6262
try
6363
{

src/Schuly.Plugin.Schulware/Dtos/StatelessLoginRequest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ namespace Schuly.Plugin.Schulware.Dtos
66
/// the <c>context_state</c> for the caller to persist on-device.
77
/// </summary>
88
public record StatelessLoginRequest(
9-
string SchulnetzBaseUrl,
9+
string BaseUrl,
1010
string Email,
1111
string Password,
1212
string? TotpSecret);

src/Schuly.Plugin.Schulware/Dtos/StatelessRefreshRequest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace Schuly.Plugin.Schulware.Dtos
88
/// exact WebView user agent back in on every refresh.
99
/// </summary>
1010
public record StatelessRefreshRequest(
11-
string SchulnetzBaseUrl,
11+
string BaseUrl,
1212
string UserAgent,
1313
JsonElement ContextState);
1414
}

0 commit comments

Comments
 (0)