Fixed: Use Array.Empty and fix a few multiple enumerations

(cherry picked from commit 11d91faaada0e70910c832ce405ddeed52a24172)
pull/1616/head
Bogdan 1 year ago
parent a9e1204a9b
commit d667c7d853

@ -5,8 +5,6 @@ using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Runtime.Loader;
using System.Text;
using System.Threading.Tasks;
using NzbDrone.Common.EnvironmentInfo;
namespace NzbDrone.Common.Composition
@ -19,16 +17,17 @@ namespace NzbDrone.Common.Composition
RegisterSQLiteResolver();
}
public static IEnumerable<Assembly> Load(IEnumerable<string> assemblies)
public static IList<Assembly> Load(IList<string> assemblyNames)
{
var toLoad = assemblies.ToList();
var toLoad = assemblyNames.ToList();
toLoad.Add("Prowlarr.Common");
toLoad.Add(OsInfo.IsWindows ? "Prowlarr.Windows" : "Prowlarr.Mono");
var startupPath = AppDomain.CurrentDomain.BaseDirectory;
return toLoad.Select(x =>
AssemblyLoadContext.Default.LoadFromAssemblyPath(Path.Combine(startupPath, $"{x}.dll")));
return toLoad
.Select(x => AssemblyLoadContext.Default.LoadFromAssemblyPath(Path.Combine(startupPath, $"{x}.dll")))
.ToList();
}
private static Assembly ContainerResolveEventHandler(object sender, ResolveEventArgs args)

@ -14,14 +14,14 @@ namespace NzbDrone.Common.OAuth
{
get
{
var parameters = this.Where(p => p.Name.Equals(name));
var parameters = this.Where(p => p.Name.Equals(name)).ToArray();
if (!parameters.Any())
{
return null;
}
if (parameters.Count() == 1)
if (parameters.Length == 1)
{
return parameters.Single();
}

@ -103,7 +103,7 @@ namespace NzbDrone.Core.Datastore
{
if (!ids.Any())
{
return new List<TModel>();
return Array.Empty<TModel>();
}
var result = Query(x => ids.Contains(x.Id));

@ -1,3 +1,4 @@
using System;
using System.Collections.Generic;
using System.Net.Http;
using NLog;
@ -64,7 +65,7 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation.Proxies
catch (DownloadClientException e)
{
_logger.Error(e);
return new List<DownloadStationTask>();
return Array.Empty<DownloadStationTask>();
}
}

@ -22,7 +22,7 @@ namespace NzbDrone.Core.IndexerSearch
@"(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x9F\uFEFF\uFFFE\uFFFF]",
RegexOptions.Compiled);
public List<ReleaseInfo> Releases { get; set; }
public IList<ReleaseInfo> Releases { get; set; }
private static string RemoveInvalidXMLChars(string text)
{

@ -148,7 +148,7 @@ namespace NzbDrone.Core.IndexerSearch
return spec;
}
private async Task<List<ReleaseInfo>> Dispatch(Func<IIndexer, Task<IndexerPageableQueryResult>> searchAction, SearchCriteriaBase criteriaBase)
private async Task<IList<ReleaseInfo>> Dispatch(Func<IIndexer, Task<IndexerPageableQueryResult>> searchAction, SearchCriteriaBase criteriaBase)
{
var indexers = _indexerFactory.Enabled();
@ -168,7 +168,7 @@ namespace NzbDrone.Core.IndexerSearch
if (indexers.Count == 0)
{
_logger.Debug("All provided categories are unsupported by selected indexers: {0}", string.Join(", ", criteriaBase.Categories));
return new List<ReleaseInfo>();
return Array.Empty<ReleaseInfo>();
}
}
@ -189,7 +189,7 @@ namespace NzbDrone.Core.IndexerSearch
{
if (_indexerLimitService.AtQueryLimit((IndexerDefinition)indexer.Definition))
{
return new List<ReleaseInfo>();
return Array.Empty<ReleaseInfo>();
}
try
@ -224,7 +224,7 @@ namespace NzbDrone.Core.IndexerSearch
_logger.Error(e, "Error while searching for {0}", criteriaBase);
}
return new List<ReleaseInfo>();
return Array.Empty<ReleaseInfo>();
}
}
}

@ -93,7 +93,7 @@ namespace NzbDrone.Core.Indexers
{
if (string.IsNullOrWhiteSpace(input))
{
return new List<IndexerCategory>();
return Array.Empty<IndexerCategory>();
}
var cats = _categoryMapping
@ -109,7 +109,7 @@ namespace NzbDrone.Core.Indexers
{
if (string.IsNullOrWhiteSpace(trackerCategoryDesc))
{
return new List<IndexerCategory>();
return Array.Empty<IndexerCategory>();
}
var cats = _categoryMapping

@ -189,7 +189,7 @@ namespace NzbDrone.Core.Indexers
public override IEnumerable<IndexerDefinition> GetPresetDefinitions(IndexerDefinition providerDefinition)
{
return new List<IndexerDefinition>();
return Array.Empty<IndexerDefinition>();
}
public override void SetProviderCharacteristics(IIndexer provider, IndexerDefinition definition)

@ -82,7 +82,12 @@ namespace NzbDrone.Core.Indexers
}
}
return !PostProcess(indexerResponse, items, releases) ? new List<ReleaseInfo>() : releases;
if (!PostProcess(indexerResponse, items, releases))
{
return Array.Empty<ReleaseInfo>();
}
return releases;
}
public Action<IDictionary<string, string>, DateTime?> CookiesUpdater { get; set; }

@ -44,11 +44,11 @@ namespace Prowlarr.Api.V1
[Produces("application/json")]
public List<TProviderResource> GetAll()
{
var providerDefinitions = _providerFactory.All().OrderBy(p => p.ImplementationName);
var providerDefinitions = _providerFactory.All();
var result = new List<TProviderResource>(providerDefinitions.Count());
var result = new List<TProviderResource>(providerDefinitions.Count);
foreach (var definition in providerDefinitions)
foreach (var definition in providerDefinitions.OrderBy(p => p.ImplementationName))
{
_providerFactory.SetProviderCharacteristics(definition);

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using FluentValidation;
using FluentValidation.Results;
using Microsoft.AspNetCore.Mvc;
@ -73,7 +74,8 @@ namespace Prowlarr.Http.REST
}
}
var attributes = descriptor.MethodInfo.CustomAttributes;
var attributes = descriptor.MethodInfo.CustomAttributes as IReadOnlyCollection<CustomAttributeData> ??
descriptor.MethodInfo.CustomAttributes.ToArray();
if (attributes.Any(x => VALIDATE_ID_ATTRIBUTES.Contains(x.AttributeType)) && !skipValidate)
{
if (context.ActionArguments.TryGetValue("id", out var idObj))

Loading…
Cancel
Save