implement profile interaction registration through plugins (mute and vpn detection implementation)
This commit is contained in:
@ -34,5 +34,6 @@ namespace SharedLibraryCore.Dtos
|
||||
public string CurrentServerName { get; set; }
|
||||
public IGeoLocationResult GeoLocationInfo { get; set; }
|
||||
public ClientNoteMetaResponse NoteMeta { get; set; }
|
||||
public List<IInteractionData> Interactions { get; set; }
|
||||
}
|
||||
}
|
||||
|
27
SharedLibraryCore/Helpers/InteractionData.cs
Normal file
27
SharedLibraryCore/Helpers/InteractionData.cs
Normal file
@ -0,0 +1,27 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Data.Models.Client;
|
||||
using SharedLibraryCore.Interfaces;
|
||||
using InteractionCallback = System.Func<int?, Data.Models.Reference.Game?, System.Threading.CancellationToken, System.Threading.Tasks.Task<string>>;
|
||||
using ScriptInteractionCallback = System.Func<int?, Data.Models.Reference.Game?, System.Threading.CancellationToken, System.Threading.Tasks.Task<string>>;
|
||||
|
||||
namespace SharedLibraryCore.Helpers;
|
||||
|
||||
public class InteractionData : IInteractionData
|
||||
{
|
||||
public int? EntityId { get; set; }
|
||||
public bool Enabled { get; set; }
|
||||
public string Name { get; set; }
|
||||
public string Description { get; set; }
|
||||
public string DisplayMeta { get; set; }
|
||||
public string ActionPath { get; set; }
|
||||
public Dictionary<string, string> ActionMeta { get; set; } = new();
|
||||
public string ActionUri => ActionPath + "?" + string.Join('&', ActionMeta.Select(kvp => $"{kvp.Key}={kvp.Value}"));
|
||||
public EFClient.Permission? MinimumPermission { get; set; }
|
||||
public string PermissionEntity { get; set; } = "Interaction";
|
||||
public string PermissionAccess { get; set; } = "Read";
|
||||
public string Source { get; set; }
|
||||
public InteractionCallback Action { get; set; }
|
||||
public Delegate ScriptAction { get; set; }
|
||||
}
|
25
SharedLibraryCore/Interfaces/IInteractionData.cs
Normal file
25
SharedLibraryCore/Interfaces/IInteractionData.cs
Normal file
@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Data.Models.Client;
|
||||
using InteractionCallback = System.Func<int?, Data.Models.Reference.Game?, System.Threading.CancellationToken, System.Threading.Tasks.Task<string>>;
|
||||
using ScriptInteractionCallback = System.Func<int?, Data.Models.Reference.Game?, System.Threading.CancellationToken, System.Threading.Tasks.Task<string>>;
|
||||
|
||||
namespace SharedLibraryCore.Interfaces;
|
||||
|
||||
public interface IInteractionData
|
||||
{
|
||||
int? EntityId { get; }
|
||||
bool Enabled { get; }
|
||||
string Name { get; }
|
||||
string Description { get; }
|
||||
string DisplayMeta { get; }
|
||||
string ActionPath { get; }
|
||||
Dictionary<string, string> ActionMeta { get; }
|
||||
string ActionUri { get; }
|
||||
EFClient.Permission? MinimumPermission { get; }
|
||||
string PermissionEntity { get; }
|
||||
string PermissionAccess { get; }
|
||||
string Source { get; }
|
||||
InteractionCallback Action { get; }
|
||||
Delegate ScriptAction { get; }
|
||||
}
|
17
SharedLibraryCore/Interfaces/IInteractionRegistration.cs
Normal file
17
SharedLibraryCore/Interfaces/IInteractionRegistration.cs
Normal file
@ -0,0 +1,17 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Data.Models;
|
||||
|
||||
namespace SharedLibraryCore.Interfaces;
|
||||
|
||||
public interface IInteractionRegistration
|
||||
{
|
||||
void RegisterScriptInteraction(string interactionName, string source, Delegate interactionRegistration);
|
||||
void RegisterInteraction(string interactionName, Func<int?, Reference.Game?, CancellationToken, Task<IInteractionData>> interactionRegistration);
|
||||
void UnregisterInteraction(string interactionName);
|
||||
Task<IEnumerable<IInteractionData>> GetInteractions(int? clientId = null,
|
||||
Reference.Game? game = null, CancellationToken token = default);
|
||||
Task<string> ProcessInteraction(string interactionId, int? clientId = null, Reference.Game? game = null, CancellationToken token = default);
|
||||
}
|
@ -4,7 +4,7 @@
|
||||
<OutputType>Library</OutputType>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<PackageId>RaidMax.IW4MAdmin.SharedLibraryCore</PackageId>
|
||||
<Version>2022.6.16.1</Version>
|
||||
<Version>2022.9.8.1</Version>
|
||||
<Authors>RaidMax</Authors>
|
||||
<Company>Forever None</Company>
|
||||
<Configurations>Debug;Release;Prerelease</Configurations>
|
||||
@ -19,7 +19,7 @@
|
||||
<IsPackable>true</IsPackable>
|
||||
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||
<Description>Shared Library for IW4MAdmin</Description>
|
||||
<PackageVersion>2022.6.16.1</PackageVersion>
|
||||
<PackageVersion>2022.9.8.1</PackageVersion>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
<NoWarn>$(NoWarn);1591</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
Reference in New Issue
Block a user