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));
        }