private static FunctionMetadata ParseFunctionMetadata(string functionName, JObject configMetadata)
{
FunctionMetadata functionMetadata = new FunctionMetadata
{
Name = functionName
};
JValue triggerDisabledValue = null;
JArray bindingArray = (JArray)configMetadata["bindings"];
if (bindingArray == null || bindingArray.Count == 0)
{
throw new FormatException("At least one binding must be declared.");
}
if (bindingArray != null)
{
foreach (JObject binding in bindingArray)
{
BindingMetadata bindingMetadata = BindingMetadata.Create(binding);
functionMetadata.Bindings.Add(bindingMetadata);
if (bindingMetadata.IsTrigger)
{
triggerDisabledValue = (JValue)binding["disabled"];
}
}
}
// A function can be disabled at the trigger or function level
if (IsDisabled(triggerDisabledValue) ||
IsDisabled((JValue)configMetadata["disabled"]))
{
functionMetadata.IsDisabled = true;
}
JToken value = null;
if (configMetadata.TryGetValue("excluded", StringComparison.OrdinalIgnoreCase, out value) &&
value.Type == JTokenType.Boolean)
{
functionMetadata.IsExcluded = (bool)value;
}
return functionMetadata;
}