do not resolve media paths with route resolver

This commit is contained in:
2022-01-17 22:25:19 +01:00
parent fc4f057265
commit 970299f036
4 changed files with 29 additions and 12 deletions
+3 -2
View File
@@ -27,8 +27,9 @@ public class CultureResolver : ICultureResolver
}
else
{
var session = context.Store.Session();
Language language = await session.Query<Language>().FirstOrDefaultAsync();
//var session = context.Store.Session();
//Language language = await session.Query<Language>().FirstOrDefaultAsync();
Language language = new() { Code = "de-DE" };
if (language == null)
{
+3 -8
View File
@@ -1,12 +1,11 @@
using Raven.Client.Documents;
using Raven.Client.Documents.Session;
using System.Collections.Concurrent;
using System.Reflection;
namespace zero.Localization;
public class Localizer : ILocalizer
{
protected Dictionary<string, string> Cache { get; private set; } = new();
protected ConcurrentDictionary<string, string> Cache { get; private set; } = new();
protected IZeroStore Store { get; private set; }
@@ -38,11 +37,7 @@ public class Localizer : ILocalizer
}
value = translation.Value;
lock (Cache) // TOOD use concurrent dictionary
{
Cache[key] = value;
}
Cache.TryAdd(key, value);
}
if (tokens != null)
+14 -1
View File
@@ -20,7 +20,20 @@ public class MediaFileSystem : PhysicalFileSystem, IMediaFileSystem
}
return PublicPathPrefix + path.TrimStart('/');
}
/// <inheritdoc />
public bool IsMediaPath(string path)
{
return path.StartsWith(PublicPathPrefix, StringComparison.InvariantCultureIgnoreCase);
}
}
public interface IMediaFileSystem : IFileSystem { }
public interface IMediaFileSystem : IFileSystem
{
/// <summary>
/// Determine whether the given path is part of the media file system
/// </summary>
bool IsMediaPath(string path);
}
+9 -1
View File
@@ -8,11 +8,13 @@ namespace zero.Routing;
public class ZeroRoutesTransformer : DynamicRouteValueTransformer
{
readonly IRouteResolver RouteResolver;
readonly IMediaFileSystem MediaFileSystem;
readonly ILogger<ZeroRoutesTransformer> Logger;
public ZeroRoutesTransformer(IRouteResolver routeResolver, ILogger<ZeroRoutesTransformer> logger)
public ZeroRoutesTransformer(IRouteResolver routeResolver, IMediaFileSystem mediaFileSystem, ILogger<ZeroRoutesTransformer> logger)
{
RouteResolver = routeResolver;
MediaFileSystem = mediaFileSystem;
Logger = logger;
}
@@ -47,6 +49,12 @@ public class ZeroRoutesTransformer : DynamicRouteValueTransformer
return null;
}
// do not continue if it is a media path
if (MediaFileSystem.IsMediaPath(httpContext.Request.Path))
{
return null;
}
// resolve route from URL
route = await RouteResolver.ResolveUrl(httpContext);