mirror of
				https://github.com/snltty/linker.git
				synced 2025-10-31 20:43:00 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			113 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using cmonitor.server.api;
 | |
| using cmonitor.config;
 | |
| using cmonitor.plugins.signin.messenger;
 | |
| using common.libs.api;
 | |
| using cmonitor.client.api;
 | |
| using common.libs.extends;
 | |
| using cmonitor.client;
 | |
| using cmonitor.server;
 | |
| using MemoryPack;
 | |
| 
 | |
| namespace cmonitor.plugins.signin
 | |
| {
 | |
|     public sealed class SignInServerApiController : IApiServerController
 | |
|     {
 | |
|         private readonly SignCaching signCaching;
 | |
|         private readonly Config config;
 | |
|         public SignInServerApiController(SignCaching signCaching, Config config)
 | |
|         {
 | |
|             this.signCaching = signCaching;
 | |
|             this.config = config;
 | |
|         }
 | |
|         public List<SignCacheInfo> List(ApiControllerParamsInfo param)
 | |
|         {
 | |
|             List<SignCacheInfo> caches = signCaching.Get(param.Content);
 | |
|             return caches;
 | |
|         }
 | |
|         public bool Del(ApiControllerParamsInfo param)
 | |
|         {
 | |
|             signCaching.Del(param.Content);
 | |
| 
 | |
|             return true;
 | |
| 
 | |
|         }
 | |
|         public Config Config(ApiControllerParamsInfo param)
 | |
|         {
 | |
|             return config;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public sealed class SignInClientApiController : IApiClientController
 | |
|     {
 | |
|         private readonly Config config;
 | |
|         private readonly ClientSignInState clientSignInState;
 | |
|         private readonly ClientSignInTransfer clientSignInTransfer;
 | |
|         private readonly MessengerSender messengerSender;
 | |
| 
 | |
|         public SignInClientApiController(Config config, ClientSignInState clientSignInState, ClientSignInTransfer clientSignInTransfer, MessengerSender messengerSender)
 | |
|         {
 | |
|             this.config = config;
 | |
|             this.clientSignInState = clientSignInState;
 | |
|             this.clientSignInTransfer = clientSignInTransfer;
 | |
|             this.messengerSender = messengerSender;
 | |
|         }
 | |
| 
 | |
|         public Config Config(ApiControllerParamsInfo param)
 | |
|         {
 | |
|             return config;
 | |
|         }
 | |
|         public void Set(ApiControllerParamsInfo param)
 | |
|         {
 | |
|             ConfigSetInfo info = param.Content.DeJson<ConfigSetInfo>();
 | |
|             config.Data.Client.Name = info.Name;
 | |
|             config.Data.Client.GroupId = info.GroupId;
 | |
|             config.Data.Client.Server = info.Server;
 | |
|             config.Save();
 | |
|             clientSignInTransfer.SignOut();
 | |
|             _ = clientSignInTransfer.SignIn();
 | |
|         }
 | |
|         public void SetServers(ApiControllerParamsInfo param)
 | |
|         {
 | |
|             config.Data.Client.Servers = param.Content.DeJson<ClientServerInfo[]>();
 | |
|             config.Save();
 | |
|         }
 | |
| 
 | |
|         public ClientSignInState Info(ApiControllerParamsInfo param)
 | |
|         {
 | |
|             return clientSignInState;
 | |
|         }
 | |
|         public async Task Del(ApiControllerParamsInfo param)
 | |
|         {
 | |
|             await messengerSender.SendOnly(new MessageRequestWrap
 | |
|             {
 | |
|                 Connection = clientSignInState.Connection,
 | |
|                 MessengerId = (ushort)SignInMessengerIds.Delete,
 | |
|                 Payload = MemoryPackSerializer.Serialize(param.Content)
 | |
|             });
 | |
|         }
 | |
|         public async Task<SignInListResponseInfo> List(ApiControllerParamsInfo param)
 | |
|         {
 | |
|             SignInListRequestInfo request = param.Content.DeJson<SignInListRequestInfo>();
 | |
|             MessageResponeInfo resp = await messengerSender.SendReply(new MessageRequestWrap
 | |
|             {
 | |
|                 Connection = clientSignInState.Connection,
 | |
|                 MessengerId = (ushort)SignInMessengerIds.List,
 | |
|                 Payload = MemoryPackSerializer.Serialize(request)
 | |
|             });
 | |
|             if (resp.Code == MessageResponeCodes.OK)
 | |
|             {
 | |
|                 return MemoryPackSerializer.Deserialize<SignInListResponseInfo>(resp.Data.Span);
 | |
|             }
 | |
|             return new SignInListResponseInfo { };
 | |
|         }
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public sealed class ConfigSetInfo
 | |
|     {
 | |
|         public string Name { get; set; }
 | |
|         public string GroupId { get; set; }
 | |
|         public string Server { get; set; }
 | |
|     }
 | |
| }
 | 
