public static void HandleHeaders()

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);
        }
    }