do not resolve media paths with route resolver
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user