Skip to content

Commit

Permalink
Perform mods verification during preparation for upcoming missions
Browse files Browse the repository at this point in the history
  • Loading branch information
3Mydlo3 committed Nov 15, 2023
1 parent 5811752 commit f1766fa
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 4 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using System.Collections.Generic;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using ArmaForces.Arma.Server.Features.Mods;
using ArmaForces.Arma.Server.Features.Modsets;
using CSharpFunctionalExtensions;

Expand All @@ -26,4 +27,12 @@ public interface IModsVerificationService
/// <param name="cancellationToken">Cancellation token.</param>
/// <returns>Successful result if all mods were verified correctly.</returns>
Task<Result> VerifyModset(string modsetName, CancellationToken cancellationToken);

/// <summary>
/// Runs detailed verification of <paramref name="mods"/>.
/// </summary>
/// <param name="mods">List of mods to verify.</param>
/// <param name="cancellationToken">Cancellation token.</param>
/// <returns>Successful result if all mods were verified correctly.</returns>
Task<Result> VerifyMods(IEnumerable<Mod> mods, CancellationToken cancellationToken);
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,27 +20,30 @@ public class MissionPreparationService : IMissionPreparationService
private readonly IWebModsetMapper _webModsetMapper;
private readonly IServerStartupService _serverStartupService;
private readonly IModsUpdateService _modsUpdateService;
private readonly IModsVerificationService _modsVerificationService;

public MissionPreparationService(
IApiMissionsClient apiMissionsClient,
IApiModsetClient apiModsetClient,
IWebModsetMapper webModsetMapper,
IServerStartupService serverStartupService,
IModsUpdateService modsUpdateService)
IModsUpdateService modsUpdateService,
IModsVerificationService modsVerificationService)
{
_apiMissionsClient = apiMissionsClient;
_apiModsetClient = apiModsetClient;
_webModsetMapper = webModsetMapper;
_serverStartupService = serverStartupService;
_modsUpdateService = modsUpdateService;
_modsVerificationService = modsVerificationService;
}

/// <inheritdoc />
public async Task<Result> PrepareForUpcomingMissions(CancellationToken cancellationToken)
{
return await _apiMissionsClient.GetUpcomingMissionsModsetsNames()
.Bind(GetModsListFromModsets)
.Tap(x => _modsUpdateService.UpdateMods(x, cancellationToken))
.Tap(x => _modsVerificationService.VerifyMods(x, cancellationToken))
.Bind(_ => Result.Success());
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
using System.Collections.Generic;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using ArmaForces.Arma.Server.Features.Mods;
using ArmaForces.Arma.Server.Features.Modsets;
using ArmaForces.ArmaServerManager.Features.Mods;
using ArmaForces.ArmaServerManager.Features.Modsets;
Expand Down Expand Up @@ -33,5 +34,11 @@ public async Task<Result> VerifyModset(Modset modset, CancellationToken cancella
{
return await _modsManager.VerifyMods(modset.Mods.ToList(), cancellationToken);
}

/// <inheritdoc />
public async Task<Result> VerifyMods(IEnumerable<Mod> mods, CancellationToken cancellationToken)
{
return await _modsManager.VerifyMods(mods.ToList(), cancellationToken);
}
}
}

0 comments on commit f1766fa

Please sign in to comment.