in src/Core/Compiling/Policy/ValidateContentCompiler.cs [18:76]
public void Handle(ICompilationContext context, InvocationExpressionSyntax node)
{
if (!node.TryExtractingConfigParameter<ValidateContentConfig>(context, "validate-content", out var values))
{
return;
}
XElement element = new("validate-content");
if (!element.AddAttribute(values, nameof(ValidateContentConfig.UnspecifiedContentTypeAction),
"unspecified-content-type-action"))
{
context.Report(Diagnostic.Create(
CompilationErrors.RequiredParameterNotDefined,
node.ArgumentList.GetLocation(),
"validate-content",
nameof(ValidateContentConfig.UnspecifiedContentTypeAction)
));
return;
}
if (!element.AddAttribute(values, nameof(ValidateContentConfig.MaxSize), "max-size"))
{
context.Report(Diagnostic.Create(
CompilationErrors.RequiredParameterNotDefined,
node.ArgumentList.GetLocation(),
"validate-content",
nameof(ValidateContentConfig.MaxSize)
));
return;
}
if (!element.AddAttribute(values, nameof(ValidateContentConfig.SizeExceededAction), "size-exceeded-action"))
{
context.Report(Diagnostic.Create(
CompilationErrors.RequiredParameterNotDefined,
node.ArgumentList.GetLocation(),
"validate-content",
nameof(ValidateContentConfig.SizeExceededAction)
));
return;
}
element.AddAttribute(values, nameof(ValidateContentConfig.ErrorsVariableName), "errors-variable-name");
// Handle ContentTypeMap
if (values.TryGetValue(nameof(ValidateContentConfig.ContentTypeMap), out var contentTypeMapValue))
{
HandleContentTypeMap(context, contentTypeMapValue, element);
}
// Handle ContentTypes
if (values.TryGetValue(nameof(ValidateContentConfig.Contents), out var contentTypesValue))
{
HandleContents(context, contentTypesValue, element);
}
context.AddPolicy(element);
}