From 5f02e744e255561be5fa9f780ffefca54f4c965a Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Fri, 19 May 2023 14:36:16 +0200 Subject: [PATCH] Add login API client --- .../Elsa.Api.Client/Elsa.Api.Client.csproj | 4 ---- .../DependencyInjectionExtensions.cs | 2 ++ .../Resources/Identity/Contracts/ILoginApi.cs | 19 +++++++++++++++++++ .../Resources/Identity/Models/LoginRequest.cs | 8 ++++++++ .../Identity/Models/LoginResponse.cs | 6 ++++++ 5 files changed, 35 insertions(+), 4 deletions(-) create mode 100644 src/clients/Elsa.Api.Client/Resources/Identity/Contracts/ILoginApi.cs create mode 100644 src/clients/Elsa.Api.Client/Resources/Identity/Models/LoginRequest.cs create mode 100644 src/clients/Elsa.Api.Client/Resources/Identity/Models/LoginResponse.cs diff --git a/src/clients/Elsa.Api.Client/Elsa.Api.Client.csproj b/src/clients/Elsa.Api.Client/Elsa.Api.Client.csproj index 7967b399b..ba17246f3 100644 --- a/src/clients/Elsa.Api.Client/Elsa.Api.Client.csproj +++ b/src/clients/Elsa.Api.Client/Elsa.Api.Client.csproj @@ -17,8 +17,4 @@ - - - - diff --git a/src/clients/Elsa.Api.Client/Extensions/DependencyInjectionExtensions.cs b/src/clients/Elsa.Api.Client/Extensions/DependencyInjectionExtensions.cs index d60e674e0..862de56f2 100644 --- a/src/clients/Elsa.Api.Client/Extensions/DependencyInjectionExtensions.cs +++ b/src/clients/Elsa.Api.Client/Extensions/DependencyInjectionExtensions.cs @@ -1,5 +1,6 @@ using Elsa.Api.Client.Contracts; using Elsa.Api.Client.Options; +using Elsa.Api.Client.Resources.Identity.Contracts; using Elsa.Api.Client.Resources.WorkflowDefinitions.Contracts; using Elsa.Api.Client.Services; using JetBrains.Annotations; @@ -25,6 +26,7 @@ public static class DependencyInjectionExtensions var settings = new RefitSettings(); services.AddElsaApiClient(settings); + services.AddElsaApiClient(settings); return services; } diff --git a/src/clients/Elsa.Api.Client/Resources/Identity/Contracts/ILoginApi.cs b/src/clients/Elsa.Api.Client/Resources/Identity/Contracts/ILoginApi.cs new file mode 100644 index 000000000..7653eaad0 --- /dev/null +++ b/src/clients/Elsa.Api.Client/Resources/Identity/Contracts/ILoginApi.cs @@ -0,0 +1,19 @@ +using Elsa.Api.Client.Resources.Identity.Models; +using Refit; + +namespace Elsa.Api.Client.Resources.Identity.Contracts; + +/// +/// Represents a client for the login API. +/// +public interface ILoginApi +{ + /// + /// Sends the specified request to the login API. + /// + /// The request. + /// The cancellation token. + /// The response. + [Post("/identity/login")] + Task LoginAsync([Body] LoginRequest request, CancellationToken cancellationToken = default); +} \ No newline at end of file diff --git a/src/clients/Elsa.Api.Client/Resources/Identity/Models/LoginRequest.cs b/src/clients/Elsa.Api.Client/Resources/Identity/Models/LoginRequest.cs new file mode 100644 index 000000000..8fddf3288 --- /dev/null +++ b/src/clients/Elsa.Api.Client/Resources/Identity/Models/LoginRequest.cs @@ -0,0 +1,8 @@ +namespace Elsa.Api.Client.Resources.Identity.Models; + +/// +/// Represents a request to log in. +/// +/// The username. +/// The password. +public record LoginRequest(string Username, string Password); \ No newline at end of file diff --git a/src/clients/Elsa.Api.Client/Resources/Identity/Models/LoginResponse.cs b/src/clients/Elsa.Api.Client/Resources/Identity/Models/LoginResponse.cs new file mode 100644 index 000000000..4b3d91434 --- /dev/null +++ b/src/clients/Elsa.Api.Client/Resources/Identity/Models/LoginResponse.cs @@ -0,0 +1,6 @@ +namespace Elsa.Api.Client.Resources.Identity.Models; + +/// +/// The response of logging in. +/// +public record LoginResponse(bool IsAuthenticated, string? AccessToken, string? RefreshToken); \ No newline at end of file