Files
Library/OwnChar/Api/OwnCharApiClient.cs
2024-08-23 11:18:50 +02:00

39 lines
1.1 KiB
C#

using OwnChar.Api.Clients;
using OwnChar.Data.Model.Client;
using Pilz.Cryptography;
using Pilz.Net.Api;
using System.Diagnostics.CodeAnalysis;
namespace OwnChar.Api;
internal class OwnCharApiClient : ApiClient, IOwnCharApiClient
{
public UserAccount? CurrentUser { get; internal set; }
[MemberNotNullWhen(true, nameof(AuthKey), nameof(CurrentUser))]
public bool IsLoggedIn => CurrentUser != null && !string.IsNullOrWhiteSpace(AuthKey);
public ILoginApiClient Auth { get; }
public IGroupsApiClient Groups { get; }
public ICharactersApiClient Characters { get; }
public IUsersApiClient Users { get; }
public OwnCharApiClient(string apiUrl) : base(apiUrl)
{
Auth = new LoginApiClient(this);
Groups = new GroupsApiClient(this);
Characters = new CharactersApiClient(this);
Users = new UsersApiClient(this);
}
protected override string? EncodeAuthKey()
{
if (IsLoggedIn && !string.IsNullOrWhiteSpace(CurrentUser.Username))
return new SecureString($"{CurrentUser}:{AuthKey}", false).EncryptedValue;
return AuthKey;
}
}