public async Task <ActionResult <SpkResult> > GetPackages( [Required] string predefined, [FromQuery] string package_update_channel, [FromQuery] string unique, [FromQuery] int build, [FromQuery] int major, [FromQuery] int micro, [FromQuery] int minor, [FromQuery] string arch, [FromQuery] string language, [FromQuery] string timezone, [FromQuery] int nano ) { Stopwatch sw = Stopwatch.StartNew(); var request = new RepositoryRequestDto() { PackageUpdateChannel = package_update_channel, Unique = unique, Build = build, Language = language, Major = major, Minor = minor, Micro = micro, Arch = arch, Timezone = timezone, Nano = nano }; try { if (!Enum.TryParse <PredefinedSources>(predefined, true, out var predefinedResult)) { return(Ok($"This link is dedicated to your DSM only, however we were unable to parse chosen repository: '{predefined}'. Please visit https://synopackage.com/repository and choose the right link")); } var result = await repositoryService.GetRepositoryPackages(predefinedResult, request, null).ConfigureAwait(false); return(new ObjectResult(result)); } catch (Exception ex) { logger.LogError(ex, "Unable to process request"); return(Ok("This link is dedicated to your DSM only. Please add it to your Package Center (Settings => Package sources => Add)")); } finally { sw.Stop(); logger.LogInformation($"Repository returned result in {sw.ElapsedMilliseconds} ms"); } }
public Task <SpkResult> GetRepositoryPackages(PredefinedSources predefinedSources, RepositoryRequestDto request, IList <string> userSources) { var versionDto = this.versionService.FindBestMatch(request.Build, request.Major, request.Minor, request.Micro); if (versionDto == null) { throw new RepositoryException($"Unable to determine the version {request.Major}.{request.Minor}.{request.Micro}.{request.Build}"); } return(GetRepositoryPackagesInternal(predefinedSources, request.PackageUpdateChannel, request.Arch, request.Unique, versionDto, userSources)); }