39 lines
1.1 KiB
C#
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;
|
|
}
|
|
}
|