1
0
mirror of https://github.com/RaidMax/IW4M-Admin.git synced 2025-06-08 06:08:20 -05:00
RaidMax 34af7a332c
Update projects to .net 8 (#326)
* Update codebase to target .NET 8.0 and improve JSON serialization

This commit switches our target framework from .NET 6.0 to .NET 8.0 and replaces Newtonsoft.Json with System.Text.Json for serialization. The JsonConverter classes have been updated to support the new JSON model and some enhancements were applied to the codebase such as fixing a command property and updating various package references.

* Align with Develop

* Update SharedLibraryCore package version

The version of the SharedLibraryCore package reference has been updated across multiple projects from '2024.2.4.85' to '2024.2.5.9'. Meanwhile, version within SharedLibraryCore.csproj has been changed from '2024.02.04.085' to '2024.01.01.1'. Changes also include removal of .NET 8 requirement notice and reenabling of status upload to master communicator.

* Update properties in IRConParser and IRConParserConfiguration to be settable

The properties in the `IRConParser` and `IRConParserConfiguration` interfaces were updated to include setters. Previously, the properties in these interfaces were read-only. This change allows for the modifications and extensions of properties defined, thereby bolstering flexibility for the handling of games and parsers.

* Replace RestEase with Refit in API usage

Refit has been implemented as a replacement for RestEase in all API calls. As such, all related code, parameters and imports have been adjusted to function with Refit. Logic has also been added to handle certain Refit-specific behaviours. Occurrences of the RestEase package have been removed from the project.

* Enable auto-redirect in HttpClient

The HttpClient instance used in Application/Main.cs has been modified to automatically follow redirect responses. This was accomplished by adding "AllowAutoRedirect = true" to the HttpClientHandler used when creating the HttpClient.

---------

Co-authored-by: Amos <amos2580@hotmail.co.uk>
2024-06-22 10:19:06 -05:00

118 lines
4.1 KiB
C#

using System;
using System.Collections;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using SharedLibraryCore.Configuration;
using SharedLibraryCore.Database.Models;
using SharedLibraryCore.Events;
using SharedLibraryCore.Helpers;
using SharedLibraryCore.Services;
namespace SharedLibraryCore.Interfaces
{
public interface IManager
{
IReadOnlyList<IManagerCommand> Commands { get; }
/// <summary>
/// enumerates the registered plugin instances
/// </summary>
IEnumerable<IPlugin> Plugins { get; }
IList<IRConParser> AdditionalRConParsers { get; }
IList<IEventParser> AdditionalEventParsers { get; }
IMiddlewareActionHandler MiddlewareActionHandler { get; }
IList<Func<GameEvent, bool>> CommandInterceptors { get; }
string Version { get; }
ITokenAuthentication TokenAuthenticator { get; }
string ExternalIPAddress { get; }
CancellationToken CancellationToken { get; }
bool IsRestartRequested { get; }
bool IsRunning { get; }
ConcurrentDictionary<long, GameEvent> ProcessingEvents { get; }
Task Init();
Task Start();
Task Stop();
Task Restart();
[Obsolete]
ILogger GetLogger(long serverId);
IList<Server> GetServers();
List<Server> Servers { get; }
IList<IManagerCommand> GetCommands();
IList<MessageToken> GetMessageTokens();
IList<EFClient> GetActiveClients();
EFClient FindActiveClient(EFClient client);
IConfigurationHandler<ApplicationConfiguration> GetApplicationSettings();
ClientService GetClientService();
PenaltyService GetPenaltyService();
/// <summary>
/// provides a page list to add and remove from
/// </summary>
/// <returns></returns>
IPageList GetPageList();
/// <summary>
/// provides a method to execute database operations by name without exposing the
/// service level methods
/// todo: this could be made obsolete by creating a seperate service library with more concrete definitions
/// </summary>
/// <param name="operationName"></param>
/// <returns></returns>
Task<IList<T>> ExecuteSharedDatabaseOperation<T>(string operationName);
void RegisterSharedDatabaseOperation(Task<IList> operation, string operationName);
/// <summary>
/// generates an rcon parser that can be configured by script plugins
/// </summary>
/// <param name="name">name of the RCon parser</param>
/// <returns>new rcon parser instance</returns>
IRConParser GenerateDynamicRConParser(string name);
/// <summary>
/// Generates an event parser that can be configured by script plugins
/// </summary>
/// <param name="name">name of the event parser</param>
/// <returns>new event parser instance</returns>
IEventParser GenerateDynamicEventParser(string name);
Task ExecuteEvent(GameEvent gameEvent);
/// <summary>
/// queues an event for processing
/// </summary>
/// <param name="gameEvent">event to be processed</param>
void AddEvent(GameEvent gameEvent);
/// <summary>
/// queues an event for processing
/// </summary>
void QueueEvent(CoreEvent coreEvent);
/// <summary>
/// adds an additional (script) command to the command list
/// </summary>
/// <param name="command"></param>
void AddAdditionalCommand(IManagerCommand command);
/// <summary>
/// removes a command by its name
/// </summary>
/// <param name="name">name of command</param>
void RemoveCommandByName(string name);
/// <summary>
/// event executed when event has finished executing
/// </summary>
event EventHandler<GameEvent> OnGameEventExecuted;
IAlertManager AlertManager { get; }
IInteractionRegistration InteractionRegistration { get; }
}
}