public async Task <IActionResult> GetCompatibleFirmwareVersions([Required, FromBody] CompatibleFirmwareVersionReadModel module) { var prefix = nameof(CompatibleFirmwareVersionController); _logger.LogInformation($"{prefix}: Getting list of compatible firmware versions based on a firmware version."); var result = await _manager.GetCompatibleFirmwareVersionsAsync(module).ConfigureAwait(false); return(Ok(result)); }
/// <summary> /// Gets the compatible firmware versions asynchronous. /// </summary> /// <param name="module">The module.</param> /// <returns></returns> public async Task <IEnumerable <string> > GetCompatibleFirmwareVersionsAsync(CompatibleFirmwareVersionReadModel module) { EnsureArg.IsNotNull(module); EnsureArg.IsNotEmptyOrWhiteSpace(module.FirmwareVersion); EnsureArg.IsNotEmptyOrWhiteSpace(module.DeviceType); EnsureArg.HasItems(module.Modules); var prefix = nameof(CompatibleFirmwareVersionManager); var firmwareVersions = new List <string>(); _logger.LogInformation($"{prefix}: methodName: {nameof(GetCompatibleFirmwareVersionsAsync)} Getting list of compatible firmware versions based on a firmware version."); _logger.LogInformation($"{prefix}: methodName: {nameof(GetCompatibleFirmwareVersionsAsync)} Cloning firmware version git repository."); var firmwareVersionUrl = await _firmwareVersionServiceManager.GetFirmwareUrlAsync(module.DeviceType).ConfigureAwait(false); _firmwareVersionServiceManager.SetGitRepoUrl(module.DeviceType, firmwareVersionUrl); await _firmwareVersionServiceManager.CloneGitRepoAsync().ConfigureAwait(false); var listOfTags = await _firmwareVersionServiceManager.GetAllFirmwareVersionsAsync().ConfigureAwait(false); listOfTags = listOfTags.Where(x => !string.Equals(x, module.FirmwareVersion, StringComparison.OrdinalIgnoreCase)).ToList(); firmwareVersions = await _firmwareVersionServiceManager.GetCompatibleFirmwareVersions(listOfTags, module.FirmwareVersion, module.DeviceType, module.Modules); return(firmwareVersions); }