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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 6
0
        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));
        }
Esempio n. 10
0
        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);
        }
Esempio n. 13
0
        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);
        }
Esempio n. 16
0
        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);
        }
Esempio n. 19
0
        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);
        }
Esempio n. 20
0
        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);
 }