in src/Core/Compiling/Policy/SetHeaderCompiler.cs [61:101]
public static void HandleHeaders(ICompilationContext context, XElement root, InitializerValue headers)
{
foreach (var header in headers.UnnamedValues!)
{
if (!header.TryGetValues<HeaderConfig>(out var headerValues))
{
context.Report(Diagnostic.Create(
CompilationErrors.PolicyArgumentIsNotOfRequiredType,
header.Node.GetLocation(),
$"{root.Name}.set-header",
nameof(HeaderConfig)
));
continue;
}
var headerElement = new XElement("set-header");
if (!headerElement.AddAttribute(headerValues, nameof(HeaderConfig.Name), "name"))
{
context.Report(Diagnostic.Create(
CompilationErrors.RequiredParameterNotDefined,
header.Node.GetLocation(),
$"{root.Name}.set-header",
nameof(HeaderConfig.Name)
));
continue;
}
headerElement.AddAttribute(headerValues, nameof(HeaderConfig.ExistsAction), "exists-action");
if (headerValues.TryGetValue(nameof(HeaderConfig.Values), out var values) &&
values.UnnamedValues is not null)
{
foreach (var value in values.UnnamedValues)
{
headerElement.Add(new XElement("value", value.Value!));
}
}
root.Add(headerElement);
}
}