public void ManualTest() { JobHostConfiguration config = new JobHostConfiguration(); config.UseScriptExtensions(); TestTraceWriter traceWriter = new TestTraceWriter(TraceLevel.Verbose); JObject hostMetadata = new JObject(); var provider = new GeneralScriptBindingProvider(config, hostMetadata, traceWriter); var metadataProvider = new JobHost(config).CreateMetadataProvider(); provider.CompleteInitialization(metadataProvider); JObject bindingMetadata = new JObject { { "type", "manualTrigger" }, { "name", "test" }, { "direction", "in" } }; ScriptBindingContext context = new ScriptBindingContext(bindingMetadata); ScriptBinding binding = null; bool created = provider.TryCreate(context, out binding); Assert.True(created); Assert.Equal(typeof(string), binding.DefaultType); var attr = binding.GetAttributes()[0]; Assert.IsType <ManualTriggerAttribute>(attr); }
private bool TryParseTriggerParameter(JObject metadata, out ParameterDescriptor parameterDescriptor, Type parameterType = null) { parameterDescriptor = null; ScriptBindingContext bindingContext = new ScriptBindingContext(metadata); ScriptBinding binding = null; foreach (var provider in this.Config.BindingProviders) { if (provider.TryCreate(bindingContext, out binding)) { break; } } if (binding != null) { // Construct the Attribute builders for the binding var attributes = binding.GetAttributes(); Collection <CustomAttributeBuilder> attributeBuilders = new Collection <CustomAttributeBuilder>(); foreach (var attribute in attributes) { var attributeBuilder = ExtensionBinding.GetAttributeBuilder(attribute); attributeBuilders.Add(attributeBuilder); } Type triggerParameterType = parameterType ?? binding.DefaultType; parameterDescriptor = new ParameterDescriptor(bindingContext.Name, triggerParameterType, attributeBuilders); return(true); } return(false); }
private static bool TryParseFunctionBinding(ScriptHostConfiguration config, Newtonsoft.Json.Linq.JObject metadata, out FunctionBinding functionBinding) { functionBinding = null; ScriptBindingContext bindingContext = new ScriptBindingContext(metadata); ScriptBinding scriptBinding = null; foreach (var provider in config.BindingProviders) { if (provider.TryCreate(bindingContext, out scriptBinding)) { break; } } if (scriptBinding == null) { return(false); } BindingMetadata bindingMetadata = BindingMetadata.Create(metadata); functionBinding = new ExtensionBinding(config, scriptBinding, bindingMetadata); return(true); }
private static bool TryParseFunctionBinding(ScriptJobHostOptions config, IEnumerable <IScriptBindingProvider> bindingProviders, JObject metadata, out FunctionBinding functionBinding) { functionBinding = null; ScriptBindingContext bindingContext = new ScriptBindingContext(metadata); ScriptBinding scriptBinding = null; foreach (var provider in bindingProviders) { if (provider.TryCreate(bindingContext, out scriptBinding)) { break; } } if (scriptBinding == null) { return(false); } BindingMetadata bindingMetadata = BindingMetadata.Create(metadata); functionBinding = new ExtensionBinding(config, scriptBinding, bindingMetadata); return(true); }
public void ManualTest() { var metadataProvider = TestHelpers.GetDefaultHost() .Services.GetService <IJobHostMetadataProvider>(); var provider = new GeneralScriptBindingProvider(NullLogger <GeneralScriptBindingProvider> .Instance, metadataProvider); JObject bindingMetadata = new JObject { { "type", "manualTrigger" }, { "name", "test" }, { "direction", "in" } }; ScriptBindingContext context = new ScriptBindingContext(bindingMetadata); ScriptBinding binding = null; bool created = provider.TryCreate(context, out binding); Assert.True(created); Assert.Equal(typeof(string), binding.DefaultType); var attr = binding.GetAttributes()[0]; Assert.IsType <ManualTriggerAttribute>(attr); }
public override bool TryCreate(ScriptBindingContext context, out ScriptBinding binding) { binding = null; if (string.Equals(context.Type, "table", StringComparison.OrdinalIgnoreCase)) { binding = new TableScriptBinding(context); } else if (string.Compare(context.Type, "queueTrigger", StringComparison.OrdinalIgnoreCase) == 0 || string.Compare(context.Type, "queue", StringComparison.OrdinalIgnoreCase) == 0) { binding = new QueueScriptBinding(context); } else if (string.Compare(context.Type, "blobTrigger", StringComparison.OrdinalIgnoreCase) == 0 || string.Compare(context.Type, "blob", StringComparison.OrdinalIgnoreCase) == 0) { binding = new BlobScriptBinding(context); } else if (string.Compare(context.Type, "httpTrigger", StringComparison.OrdinalIgnoreCase) == 0) { binding = new HttpScriptBinding(context); } else if (string.Compare(context.Type, "manualTrigger", StringComparison.OrdinalIgnoreCase) == 0) { binding = new ManualScriptBinding(context); } return(binding != null); }
/// <inheritdoc/> public override bool TryCreate(ScriptBindingContext context, out ScriptBinding binding) { if (context == null) { throw new ArgumentNullException("context"); } if (_apiHubConfig.Logger == null) { _apiHubConfig.Logger = TraceWriter; } binding = null; if (string.Compare(context.Type, "apiHubFileTrigger", StringComparison.OrdinalIgnoreCase) == 0 || string.Compare(context.Type, "apiHubFile", StringComparison.OrdinalIgnoreCase) == 0) { binding = new ApiHubFileScriptBinding(_apiHubConfig, context, _nameResolver); } else if (string.Compare(context.Type, "apiHubTable", StringComparison.OrdinalIgnoreCase) == 0) { binding = new ApiHubTableScriptBinding(context); } return(binding != null); }
public override bool TryCreate(ScriptBindingContext context, out ScriptBinding binding) { binding = null; if (string.Compare(context.Type, "httpTrigger", StringComparison.OrdinalIgnoreCase) == 0) { binding = new HttpScriptBinding(context); } return(binding != null); }
public static FunctionBinding CreateTestBinding(JObject json) { ScriptBindingContext context = new ScriptBindingContext(json); WebJobsCoreScriptBindingProvider provider = new WebJobsCoreScriptBindingProvider(new JobHostConfiguration(), new JObject(), null); ScriptBinding scriptBinding = null; provider.TryCreate(context, out scriptBinding); BindingMetadata bindingMetadata = BindingMetadata.Create(json); ScriptHostConfiguration config = new ScriptHostConfiguration(); return(new ExtensionBinding(config, scriptBinding, bindingMetadata)); }
public static FunctionBinding CreateTestBinding(JObject json) { ScriptBindingContext context = new ScriptBindingContext(json); WebJobsCoreScriptBindingProvider provider = new WebJobsCoreScriptBindingProvider(NullLogger <WebJobsCoreScriptBindingProvider> .Instance); ScriptBinding scriptBinding = null; provider.TryCreate(context, out scriptBinding); BindingMetadata bindingMetadata = BindingMetadata.Create(json); var config = new ScriptJobHostOptions(); return(new ExtensionBinding(config, scriptBinding, bindingMetadata)); }
public void TryCreate_NoMatchingMetadata_DoesNotCreateBinding() { JObject bindingMetadata = new JObject { { "type", "queue" }, { "name", "test" }, { "direction", "out" } }; ScriptBindingContext context = new ScriptBindingContext(bindingMetadata); ScriptBinding binding = null; bool created = _provider.TryCreate(context, out binding); Assert.False(created); Assert.Null(binding); }
/// <inheritdoc/> public override bool TryCreate(ScriptBindingContext context, out ScriptBinding binding) { if (context == null) { throw new ArgumentNullException("context"); } binding = null; if (string.Compare(context.Type, "documentDB", StringComparison.OrdinalIgnoreCase) == 0) { binding = new DocumentDBScriptBinding(context); } return(binding != null); }
public override bool TryCreate(ScriptBindingContext context, out ScriptBinding binding) { string name = context.Type; var attrType = this._metadataProvider.GetAttributeTypeFromName(name); if (attrType == null) { binding = null; return(false); } var attr = this._metadataProvider.GetAttribute(attrType, context.Metadata); binding = new GeneralScriptBinding(this._metadataProvider, attr, context); return(true); }
/// <inheritdoc/> public override bool TryCreate(ScriptBindingContext context, out ScriptBinding binding) { if (context == null) { throw new ArgumentNullException(nameof(context)); } binding = null; if (string.Equals(context.Type, "timerTrigger", StringComparison.OrdinalIgnoreCase)) { binding = new TimerTriggerScriptBinding(_nameResolver, _environment, context); } return(binding != null); }
public void TryCreate_MatchingMetadata_CreatesBinding() { JObject bindingMetadata = new JObject { { "type", "twilioSMS" }, { "name", "test" }, { "direction", "out" } }; ScriptBindingContext context = new ScriptBindingContext(bindingMetadata); ScriptBinding binding = null; bool created = _provider.TryCreate(context, out binding); Assert.True(created); Assert.Same(binding.Context, context); Assert.Same(typeof(IAsyncCollector <JObject>), binding.DefaultType); }
public override bool TryCreate(ScriptBindingContext context, out ScriptBinding binding) { binding = null; if (string.Compare(context.Type, "serviceBusTrigger", StringComparison.OrdinalIgnoreCase) == 0 || string.Compare(context.Type, "serviceBus", StringComparison.OrdinalIgnoreCase) == 0) { binding = new ServiceBusScriptBinding(context); } if (string.Compare(context.Type, "eventHubTrigger", StringComparison.OrdinalIgnoreCase) == 0 || string.Compare(context.Type, "eventHub", StringComparison.OrdinalIgnoreCase) == 0) { binding = new EventHubScriptBinding(Config, _eventHubConfiguration, context); } return(binding != null); }
public void TryCreate_NoMatchingMetadata_DoesNotCreateBinding() { JObject bindingMetadata = new JObject { { "type", "unknown" }, { "name", "test" }, { "direction", "out" } }; ScriptBindingContext context = new ScriptBindingContext(bindingMetadata); ScriptBinding binding = null; var mockMetadataProvider = new Mock <IJobHostMetadataProvider>(); var provider = new GeneralScriptBindingProvider(NullLogger <GeneralScriptBindingProvider> .Instance, mockMetadataProvider.Object); bool created = provider.TryCreate(context, out binding); Assert.False(created); Assert.Null(binding); }
public static FunctionBinding CreateBindingFromHost(IHost host, JObject json) { var bindingProviders = host.Services.GetServices <IScriptBindingProvider>(); var context = new ScriptBindingContext(json); ScriptBinding scriptBinding = null; bindingProviders.FirstOrDefault(p => p.TryCreate(context, out scriptBinding)); if (scriptBinding != null) { BindingMetadata bindingMetadata = BindingMetadata.Create(json); var config = new ScriptJobHostOptions(); return(new ExtensionBinding(config, scriptBinding, bindingMetadata)); } return(null); }
public void TryCreate_GetAttributes_EntityTypeTopic() { JObject bindingMetadata = new JObject { { "type", "serviceBus" }, { "name", "test" }, { "direction", "out" }, { "topicName", "topic" } }; ScriptBindingContext context = new ScriptBindingContext(bindingMetadata); ScriptBinding binding = null; bool created = _provider.TryCreate(context, out binding); Assert.True(created); Assert.Same(binding.Context, context); var serviceBusAttr = binding.GetAttributes() .Where(attr => attr is ServiceBusAttribute) .First() as ServiceBusAttribute; Assert.Equal(EntityType.Topic, serviceBusAttr.EntityType); }
public void TryCreate_NoMatchingMetadata_DoesNotCreateBinding() { JObject bindingMetadata = new JObject { { "type", "unknown" }, { "name", "test" }, { "direction", "out" } }; ScriptBindingContext context = new ScriptBindingContext(bindingMetadata); ScriptBinding binding = null; JobHostConfiguration config = new JobHostConfiguration(); config.UseScriptExtensions(); JObject hostMetadata = new JObject(); var provider = new GeneralScriptBindingProvider(config, hostMetadata, null); var metadataProvider = new JobHost(config).CreateMetadataProvider(); provider.CompleteInitialization(metadataProvider); bool created = provider.TryCreate(context, out binding); Assert.False(created); Assert.Null(binding); }
public override bool TryCreate(ScriptBindingContext context, out ScriptBinding binding) { string name = context.Type; var attrType = _metadataProvider.GetAttributeTypeFromName(name); if (attrType == null) { binding = null; return(false); } try { var attr = _metadataProvider.GetAttribute(attrType, context.Metadata); binding = new GeneralScriptBinding(_metadataProvider, attr, context); } catch (Exception e) { throw new Exception($"Unable to configure binding '{context.Name}' of type '{name}'. This may indicate invalid function.json properties", e); } return(true); }
public ExtensionBinding(ScriptHostConfiguration config, ScriptBinding binding, BindingMetadata metadata) : base(config, metadata, binding.Context.Access) { _binding = binding; Attributes = _binding.GetAttributes(); }
public override bool TryCreate(ScriptBindingContext context, out ScriptBinding binding) { binding = null; return(false); }