WebApi Changes

This commit is contained in:
Brett Hewitson 2023-03-07 20:40:37 +10:00
parent d217c08ab0
commit 33af7cf391
17 changed files with 319 additions and 309 deletions

View file

@ -1,78 +1,72 @@
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using QueryMaster;
using ServerManager.WebApplication.Models;
using ServerManager.WebApplication.Models.Data;
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using Microsoft.AspNetCore.Http;
using QueryMaster;
using ServerManager.WebApplication.Models;
using ServerManager.WebApplication.Models.Data;
namespace ServerManager.WebApplication.Services
namespace ServerManager.WebApplication.Services;
public class QueryMasterService : IServerQueryService
{
public class QueryMasterService : IServerQueryService
private readonly ServerQuerySettings _settings;
public QueryMasterService(ServerQuerySettings settings)
{
internal const string CONFIG_MANAGERCODES = "ManagerCodes";
_settings = settings;
}
private readonly IConfiguration _configuration;
public bool CheckServerStatus(string managerCode, string managerVersion, string ipString, int port)
{
ValidateServerStatusRequest(managerCode, ipString, port);
public QueryMasterService(IConfiguration configuration)
try
{
_configuration = configuration;
using var server = ServerQuery.GetServerInstance(EngineType.Source, ipString, (ushort)port);
return server.GetInfo() != null;
}
public bool CheckServerStatus(string managerCode, string managerVersion, string ipString, int port)
catch
{
ValidateServerStatusRequest(managerCode, ipString, port);
return false;
}
}
try
{
using var server = ServerQuery.GetServerInstance(EngineType.Source, ipString, (ushort)port);
private void ValidateServerStatusRequest(string managerCode, string ipString, int port)
{
var errors = new List<string>();
var serverInfo = server.GetInfo();
return serverInfo != null;
}
catch
if (string.IsNullOrWhiteSpace(managerCode))
{
errors.Add("Manager code is required.");
}
else
{
var managerCodes = _settings.ManagerCodes ?? new List<ManagerCode>();
if (!managerCodes.Any(c => c.Code.Equals(managerCode, StringComparison.OrdinalIgnoreCase)))
{
return false;
errors.Add("Manager code is invalid.");
}
}
private void ValidateServerStatusRequest(string managerCode, string ipString, int port)
if (string.IsNullOrWhiteSpace(ipString))
{
var errors = new List<string>();
errors.Add("IP Address is required.");
}
else if (!IPAddress.TryParse(ipString, out IPAddress _))
{
errors.Add("IP Address is invalid.");
}
if (string.IsNullOrWhiteSpace(managerCode))
{
errors.Add("Manager code is required.");
}
else
{
var managerCodes = _configuration.GetSection(CONFIG_MANAGERCODES).Get<List<ManagerCode>>() ?? new List<ManagerCode>();
if (!managerCodes.Any(c => c.Code.Equals(managerCode, StringComparison.OrdinalIgnoreCase)))
{
errors.Add("Manager code is invalid.");
}
}
if (port <= ushort.MinValue || port >= ushort.MaxValue)
{
errors.Add($"Valid port is required ({ushort.MinValue} to {ushort.MaxValue}).");
}
if (string.IsNullOrWhiteSpace(ipString))
{
errors.Add("IP Address is required.");
}
else if (!IPAddress.TryParse(ipString, out IPAddress _))
{
errors.Add("IP Address is invalid.");
}
if (port <= ushort.MinValue || port >= ushort.MaxValue)
{
errors.Add($"Valid port is required ({ushort.MinValue} to {ushort.MaxValue}).");
}
if (errors.Count > 0)
{
throw new ServerManagerApiException(StatusCodes.Status400BadRequest, errors);
}
if (errors.Count > 0)
{
throw new ServerManagerApiException(StatusCodes.Status400BadRequest, errors);
}
}
}