using Duende.IdentityServer.Services; using Easy.DI; using Easy.Result; using Identity.Api.DDD.Contracts.Dtos; using Identity.Api.DDD.Contracts.Models; using Microsoft.JSInterop; namespace Identity.Api.Pages; public class SpaService : ITransientDependency { private readonly IJSRuntime JS; private readonly string BaseUrl; public SpaService(IJSRuntime iJSRuntime, IServerUrls iServerUrls) { JS = iJSRuntime; BaseUrl = $"{iServerUrls.BaseUrl}/api/spa"; } public async Task PostLogInAsync(LoginDto loginDto) { string url = $"{BaseUrl}/login"; return await JS.InvokeAsync("PostLogInAsync", url, loginDto); } public async Task PostConsentAsync(ConsentDto consentDto) { string url = $"{BaseUrl}/consent"; return await JS.InvokeAsync("PostConsentAsync", url, consentDto); } public async Task GetContextAsync(string returnUrl) { string url = $"{BaseUrl}/context?returnUrl={Uri.EscapeDataString(returnUrl)}"; var res = await JS.InvokeAsync>("GetContextAsync", url); return res?.Result ?? new ContextModel(); } public async Task GetLogOutAsync(string logOutId) { string url = $"{BaseUrl}/logout/{logOutId}"; var res = await JS.InvokeAsync>("GetLogOutAsync", url); return res?.Result ?? new LogOutModel(); } public async Task PostLogOutAsync(string logOutId) { string url = $"{BaseUrl}/logout/{logOutId}"; var res = await JS.InvokeAsync>("PostLogOutAsync", url); return res?.Result ?? new LogOutModel(); } public async Task GetErrorAsync(string errorId) { string url = $"{BaseUrl}/error?errorId={errorId}"; var res = await JS.InvokeAsync>("GetErrorAsync", url); return res?.Result ?? new ErrorModel(); } public async Task LocationAsync(string requestUrl) { await JS.InvokeVoidAsync("LocationAsync", requestUrl); } //LocationAsync }