Open Source Web Application Framework for ASP.NET Core
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

46 lines
1.6 KiB

using System.Threading.Tasks;
using JetBrains.Annotations;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.TextTemplating
{
public class TemplateContentProvider : ITemplateContentProvider, ITransientDependency
{
private readonly ITemplateDefinitionManager _templateDefinitionManager;
public TemplateContentProvider(
ITemplateDefinitionManager templateDefinitionManager
)
{
_templateDefinitionManager = templateDefinitionManager;
}
public Task<string> GetContentOrNullAsync(
[NotNull] string templateName,
[CanBeNull] string cultureName = null)
{
var template = _templateDefinitionManager.Get(templateName);
return GetContentOrNullAsync(template, cultureName);
}
public async Task<string> GetContentOrNullAsync(
[NotNull] TemplateDefinition templateDefinition,
[CanBeNull] string cultureName = null)
{
Check.NotNull(templateDefinition, nameof(templateDefinition));
foreach (var contributor in templateDefinition.Contributors)
{
var templateString = contributor.GetOrNull(cultureName); //TODO: GetOrNull should be async!
if (templateString != null)
{
return templateString;
}
}
throw new AbpException(
$"None of the template contributors could get the content for the template '{templateDefinition.Name}'"
);
}
}
}