| File: Infrastructure\StaticAssetsEndpointDataSourceHelper.cs | Web Access |
| Project: src\aspnetcore\src\StaticAssets\src\Microsoft.AspNetCore.StaticAssets.csproj (Microsoft.AspNetCore.StaticAssets) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Routing; using Microsoft.Extensions.DependencyInjection; namespace Microsoft.AspNetCore.StaticAssets.Infrastructure; /// <summary> /// For internal framework use only. /// </summary> public static class StaticAssetsEndpointDataSourceHelper { /// <summary> /// For internal framework use only. /// </summary> public static bool HasStaticAssetsDataSource(IEndpointRouteBuilder builder, string? staticAssetsManifestPath = null) { staticAssetsManifestPath = ApplyStaticAssetManifestPathConventions(staticAssetsManifestPath, builder.ServiceProvider); foreach (var dataSource in builder.DataSources) { if (dataSource is StaticAssetsEndpointDataSource staticAssetsDataSource) { if (string.Equals(staticAssetsDataSource.ManifestPath, staticAssetsManifestPath, StringComparison.Ordinal)) { return true; } } } return false; } /// <summary> /// For internal framework use only. /// </summary> public static IReadOnlyList<StaticAssetDescriptor> ResolveStaticAssetDescriptors( IEndpointRouteBuilder endpointRouteBuilder, string? manifestPath) { manifestPath = ApplyStaticAssetManifestPathConventions(manifestPath, endpointRouteBuilder.ServiceProvider); foreach (var dataSource in endpointRouteBuilder.DataSources) { if (dataSource is StaticAssetsEndpointDataSource staticAssetsDataSource && string.Equals(staticAssetsDataSource.ManifestPath, manifestPath, StringComparison.Ordinal)) { return staticAssetsDataSource.Descriptors; } } return []; } internal static string ApplyStaticAssetManifestPathConventions(string? staticAssetsManifestPath, IServiceProvider services) { if (staticAssetsManifestPath is null) { var environment = services.GetRequiredService<IWebHostEnvironment>(); return Path.Combine(AppContext.BaseDirectory, $"{environment.ApplicationName}.staticwebassets.endpoints.json"); } return Path.IsPathRooted(staticAssetsManifestPath) ? staticAssetsManifestPath : Path.Combine(AppContext.BaseDirectory, staticAssetsManifestPath); } }