src/BundledBindings/HttpTriggerBinding.cs (40 lines of code) (raw):
//
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
//
using Microsoft.Azure.Functions.PowerShell.SDK.Common;
using System.Management.Automation.Language;
namespace Microsoft.Azure.Functions.PowerShell.SDK.BundledBindings
{
public class HttpTriggerBinding : IInputBinding
{
public HttpTriggerBinding()
{
defaultOutputBindings.Add(HttpOutputBinding.Create());
}
public override string BindingAttributeName => Constants.AttributeNames.HttpTrigger;
public override string BindingType => Constants.BindingNames.HttpTrigger;
public override BindingInformation? ExtractBinding(AttributeAst attribute, ParameterAst parameter)
{
BindingInformation bindingInformation = new BindingInformation
{
Name = parameter.Name.VariablePath.UserPath
};
string bindingAuthLevel = WorkerIndexingHelper.GetNamedArgumentStringValue(attribute, Constants.BindingPropertyNames.AuthLevel, Constants.DefaultHttpAuthLevel);
object bindingMethods = WorkerIndexingHelper.GetNamedArgumentDefaultTypeValue(attribute, Constants.BindingPropertyNames.Methods, Constants.DefaultHttpMethods);
string route = WorkerIndexingHelper.GetNamedArgumentStringValue(attribute, Constants.BindingPropertyNames.Route);
bindingInformation.Direction = BindingDirection;
bindingInformation.Type = BindingType;
bindingInformation.otherInformation.Add(Constants.JsonPropertyNames.AuthLevel, bindingAuthLevel);
bindingInformation.otherInformation.Add(Constants.JsonPropertyNames.Methods, bindingMethods);
if (!string.IsNullOrWhiteSpace(route))
{
bindingInformation.otherInformation.Add(Constants.JsonPropertyNames.Route, route);
}
return bindingInformation;
}
public override bool ShouldUseDefaultOutputBindings(List<BindingInformation> existingOutputBindings)
{
IEnumerable<BindingInformation> httpOutputBindings = existingOutputBindings.Where(x => x.Type == Constants.BindingNames.Http &&
x.Direction == BindingInformation.Directions.Out);
return !httpOutputBindings.Any();
}
}
}