public void Handle()

in src/Core/Compiling/Policy/ValidateAzureAdTokenCompiler.cs [18:68]


    public void Handle(ICompilationContext context, InvocationExpressionSyntax node)
    {
        if (!node.TryExtractingConfigParameter<ValidateAzureAdTokenConfig>(context, "validate-azure-ad-token",
                out IReadOnlyDictionary<string, InitializerValue>? values))
        {
            return;
        }

        XElement element = new("validate-azure-ad-token");

        if (!element.AddAttribute(values, nameof(ValidateAzureAdTokenConfig.TenantId), "tenant-id"))
        {
            context.Report(Diagnostic.Create(
                CompilationErrors.RequiredParameterNotDefined,
                node.GetLocation(),
                "validate-azure-ad-token",
                nameof(ValidateAzureAdTokenConfig.TenantId)
            ));
            return;
        }

        element.AddAttribute(values, nameof(ValidateAzureAdTokenConfig.HeaderName), "header-name");
        element.AddAttribute(values, nameof(ValidateAzureAdTokenConfig.QueryParameterName), "query-parameter-name");
        element.AddAttribute(values, nameof(ValidateAzureAdTokenConfig.TokenValue), "token-value");
        element.AddAttribute(values, nameof(ValidateAzureAdTokenConfig.FailedValidationHttpCode),
            "failed-validation-httpcode");
        element.AddAttribute(values, nameof(ValidateAzureAdTokenConfig.FailedValidationErrorMessage),
            "failed-validation-error-message");
        element.AddAttribute(values, nameof(ValidateAzureAdTokenConfig.OutputTokenVariableName),
            "output-token-variable-name");

        GenericCompiler.HandleList(element, values, nameof(ValidateAzureAdTokenConfig.BackendApplicationIds),
            "backend-application-ids", "application-id");
        GenericCompiler.HandleList(element, values, nameof(ValidateAzureAdTokenConfig.ClientApplicationIds),
            "client-application-ids",
            "application-id");
        GenericCompiler.HandleList(element, values, nameof(ValidateAzureAdTokenConfig.Audiences), "audiences",
            "audience");

        if (values.TryGetValue(nameof(ValidateAzureAdTokenConfig.RequiredClaims), out InitializerValue? requiredClaims))
        {
            element.Add(ClaimsConfigCompiler.HandleRequiredClaims(context, requiredClaims));
        }

        if (values.TryGetValue(nameof(ValidateAzureAdTokenConfig.DecryptionKeys), out InitializerValue? decryptionKeys))
        {
            element.Add(HandleDecryptionKeys(context, decryptionKeys));
        }

        context.AddPolicy(element);
    }