mirror of
https://github.com/snltty/linker.git
synced 2025-11-02 05:24:21 +08:00
161 lines
6.5 KiB
C#
161 lines
6.5 KiB
C#
using linker.libs;
|
|
using linker.libs.extends;
|
|
using linker.libs.web;
|
|
using linker.messenger.api;
|
|
using linker.messenger.signin;
|
|
|
|
namespace linker.messenger.cdkey
|
|
{
|
|
/// <summary>
|
|
/// 中继管理接口
|
|
/// </summary>
|
|
public sealed class CdkeyApiController : IApiController
|
|
{
|
|
private readonly SignInClientState signInClientState;
|
|
private readonly IMessengerSender messengerSender;
|
|
private readonly ISerializer serializer;
|
|
private readonly ISignInClientStore signInClientStore;
|
|
private readonly ICdkeyClientStore cdkeyClientStore;
|
|
|
|
|
|
public CdkeyApiController(SignInClientState signInClientState, IMessengerSender messengerSender, ISerializer serializer, ISignInClientStore signInClientStore, ICdkeyClientStore cdkeyClientStore)
|
|
{
|
|
this.signInClientState = signInClientState;
|
|
this.messengerSender = messengerSender;
|
|
this.serializer = serializer;
|
|
this.signInClientStore = signInClientStore;
|
|
this.cdkeyClientStore = cdkeyClientStore;
|
|
}
|
|
|
|
public string GetSecretKey(ApiControllerParamsInfo param)
|
|
{
|
|
return cdkeyClientStore.SecretKey;
|
|
}
|
|
public void SetSecretKey(ApiControllerParamsInfo param)
|
|
{
|
|
cdkeyClientStore.SetSecretKey(param.Content);
|
|
}
|
|
|
|
|
|
public async Task<bool> AccessCdkey(ApiControllerParamsInfo param)
|
|
{
|
|
var resp = await messengerSender.SendReply(new MessageRequestWrap
|
|
{
|
|
Connection = signInClientState.Connection,
|
|
MessengerId = (ushort)CdkeyMessengerIds.AccessCdkey,
|
|
Payload = serializer.Serialize(cdkeyClientStore.SecretKey)
|
|
}).ConfigureAwait(false);
|
|
return resp.Code == MessageResponeCodes.OK && resp.Data.Span.SequenceEqual(Helper.TrueArray);
|
|
}
|
|
|
|
[Access(AccessValue.Cdkey)]
|
|
public async Task<bool> AddCdkey(ApiControllerParamsInfo param)
|
|
{
|
|
CdkeyStoreInfo info = param.Content.DeJson<CdkeyStoreInfo>();
|
|
var resp = await messengerSender.SendReply(new MessageRequestWrap
|
|
{
|
|
Connection = signInClientState.Connection,
|
|
MessengerId = (ushort)CdkeyMessengerIds.AddCdkey,
|
|
Payload = serializer.Serialize(new CdkeyAddInfo
|
|
{
|
|
Data = info,
|
|
SecretKey = cdkeyClientStore.SecretKey
|
|
})
|
|
}).ConfigureAwait(false);
|
|
|
|
return resp.Code == MessageResponeCodes.OK && resp.Data.Span.SequenceEqual(Helper.TrueArray);
|
|
}
|
|
|
|
[Access(AccessValue.Cdkey)]
|
|
public async Task<bool> DelCdkey(ApiControllerParamsInfo param)
|
|
{
|
|
var resp = await messengerSender.SendReply(new MessageRequestWrap
|
|
{
|
|
Connection = signInClientState.Connection,
|
|
MessengerId = (ushort)CdkeyMessengerIds.DelCdkey,
|
|
Payload = serializer.Serialize(new CdkeyDelInfo
|
|
{
|
|
Id = int.Parse(param.Content),
|
|
UserId = signInClientStore.Server.UserId,
|
|
SecretKey = cdkeyClientStore.SecretKey
|
|
})
|
|
}).ConfigureAwait(false);
|
|
|
|
return resp.Code == MessageResponeCodes.OK && resp.Data.Span.SequenceEqual(Helper.TrueArray);
|
|
}
|
|
|
|
[Access(AccessValue.Cdkey)]
|
|
public async Task<CdkeyPageResultInfo> PageCdkey(ApiControllerParamsInfo param)
|
|
{
|
|
CdkeyPageRequestInfo info = param.Content.DeJson<CdkeyPageRequestInfo>();
|
|
info.SecretKey = cdkeyClientStore.SecretKey;
|
|
var resp = await messengerSender.SendReply(new MessageRequestWrap
|
|
{
|
|
Connection = signInClientState.Connection,
|
|
MessengerId = (ushort)CdkeyMessengerIds.PageCdkey,
|
|
Payload = serializer.Serialize(info)
|
|
}).ConfigureAwait(false);
|
|
if (resp.Code == MessageResponeCodes.OK)
|
|
{
|
|
return serializer.Deserialize<CdkeyPageResultInfo>(resp.Data.Span);
|
|
}
|
|
|
|
return new CdkeyPageResultInfo();
|
|
}
|
|
public async Task<CdkeyPageResultInfo> MyCdkey(ApiControllerParamsInfo param)
|
|
{
|
|
CdkeyPageRequestInfo info = param.Content.DeJson<CdkeyPageRequestInfo>();
|
|
info.SecretKey = cdkeyClientStore.SecretKey;
|
|
info.UserId = signInClientStore.Server.UserId;
|
|
var resp = await messengerSender.SendReply(new MessageRequestWrap
|
|
{
|
|
Connection = signInClientState.Connection,
|
|
MessengerId = (ushort)CdkeyMessengerIds.PageCdkey,
|
|
Payload = serializer.Serialize(info)
|
|
}).ConfigureAwait(false);
|
|
if (resp.Code == MessageResponeCodes.OK)
|
|
{
|
|
return serializer.Deserialize<CdkeyPageResultInfo>(resp.Data.Span);
|
|
}
|
|
|
|
return new CdkeyPageResultInfo();
|
|
}
|
|
public async Task<CdkeyTestResultInfo> TestCdkey(ApiControllerParamsInfo param)
|
|
{
|
|
CdkeyImportInfo info = param.Content.DeJson<CdkeyImportInfo>();
|
|
info.SecretKey = cdkeyClientStore.SecretKey;
|
|
info.UserId = signInClientStore.Server.UserId;
|
|
var resp = await messengerSender.SendReply(new MessageRequestWrap
|
|
{
|
|
Connection = signInClientState.Connection,
|
|
MessengerId = (ushort)CdkeyMessengerIds.TestCdkey,
|
|
Payload = serializer.Serialize(info)
|
|
}).ConfigureAwait(false);
|
|
if (resp.Code == MessageResponeCodes.OK)
|
|
{
|
|
return serializer.Deserialize<CdkeyTestResultInfo>(resp.Data.Span);
|
|
}
|
|
|
|
return new CdkeyTestResultInfo();
|
|
}
|
|
|
|
public async Task<string> ImportCdkey(ApiControllerParamsInfo param)
|
|
{
|
|
CdkeyImportInfo info = param.Content.DeJson<CdkeyImportInfo>();
|
|
info.SecretKey = cdkeyClientStore.SecretKey;
|
|
info.UserId = signInClientStore.Server.UserId;
|
|
var resp = await messengerSender.SendReply(new MessageRequestWrap
|
|
{
|
|
Connection = signInClientState.Connection,
|
|
MessengerId = (ushort)CdkeyMessengerIds.ImportCdkey,
|
|
Payload = serializer.Serialize(info)
|
|
}).ConfigureAwait(false);
|
|
if (resp.Code == MessageResponeCodes.OK)
|
|
{
|
|
return serializer.Deserialize<string>(resp.Data.Span);
|
|
}
|
|
return "Network";
|
|
}
|
|
}
|
|
}
|