in src/Core/Compiling/Policy/SendRequestCompiler.cs [18:73]
public void Handle(ICompilationContext context, InvocationExpressionSyntax node)
{
if (!node.TryExtractingConfigParameter<SendRequestConfig>(context, "send-request", out var values))
{
return;
}
var element = new XElement("send-request");
if (!element.AddAttribute(values, nameof(SendRequestConfig.ResponseVariableName), "response-variable-name"))
{
context.Report(Diagnostic.Create(
CompilationErrors.RequiredParameterNotDefined,
node.GetLocation(),
"send-request",
nameof(SendRequestConfig.ResponseVariableName)
));
return;
}
element.AddAttribute(values, nameof(SendRequestConfig.Mode), "mode");
element.AddAttribute(values, nameof(SendRequestConfig.Timeout), "timeout");
element.AddAttribute(values, nameof(SendRequestConfig.IgnoreError), "ignore-error");
if (values.TryGetValue(nameof(SendRequestConfig.Url), out var url))
{
element.Add(new XElement("set-url", url.Value!));
}
if (values.TryGetValue(nameof(SendRequestConfig.Method), out var method))
{
element.Add(new XElement("set-method", method.Value!));
}
if (values.TryGetValue(nameof(SendRequestConfig.Headers), out var headers))
{
BaseSetHeaderCompiler.HandleHeaders(context, element, headers);
}
if (values.TryGetValue(nameof(SendRequestConfig.Body), out var body))
{
SetBodyCompiler.HandleBody(context, element, body);
}
if (values.TryGetValue(nameof(SendRequestConfig.Authentication), out var authentication))
{
HandleAuthentication(context, element, authentication);
}
if (values.TryGetValue(nameof(SendRequestConfig.Proxy), out var proxy))
{
ProxyCompiler.HandleProxy(context, element, proxy);
}
context.AddPolicy(element);
}