in src/Core/Compiling/Policy/RateLimitCompiler.cs [81:124]
private bool Handle(ICompilationContext context, string name, InitializerValue value, out XElement element)
{
element = new XElement(name);
var values = value.NamedValues!;
var isNameAdded = element.AddAttribute(values, nameof(EntityLimitConfig.Name), "name");
var isIdAdded = element.AddAttribute(values, nameof(EntityLimitConfig.Id), "id");
if (!isNameAdded && !isIdAdded)
{
context.Report(Diagnostic.Create(
CompilationErrors.AtLeastOneOfTwoShouldBeDefined,
value.Node.GetLocation(),
name,
nameof(EntityLimitConfig.Name),
nameof(EntityLimitConfig.Id)
));
return false;
}
if (!element.AddAttribute(values, nameof(EntityLimitConfig.Calls), "calls"))
{
context.Report(Diagnostic.Create(
CompilationErrors.RequiredParameterNotDefined,
value.Node.GetLocation(),
name,
nameof(EntityLimitConfig.Calls)
));
return false;
}
if (!element.AddAttribute(values, nameof(EntityLimitConfig.RenewalPeriod), "renewal-period"))
{
context.Report(Diagnostic.Create(
CompilationErrors.RequiredParameterNotDefined,
value.Node.GetLocation(),
name,
nameof(EntityLimitConfig.RenewalPeriod)
));
return false;
}
return true;
}