Exemplo n.º 1
0
        private static BindingMetadata ParseBindingMetadata(JObject binding, INameResolver nameResolver)
        {
            BindingMetadata  bindingMetadata       = null;
            string           bindingTypeValue      = (string)binding["type"];
            string           bindingDirectionValue = (string)binding["direction"];
            string           connection            = (string)binding["connection"];
            BindingType      bindingType           = default(BindingType);
            BindingDirection bindingDirection      = default(BindingDirection);

            if (!string.IsNullOrEmpty(bindingDirectionValue) &&
                !Enum.TryParse <BindingDirection>(bindingDirectionValue, true, out bindingDirection))
            {
                throw new FormatException(string.Format(CultureInfo.InvariantCulture, "'{0}' is not a valid binding direction.", bindingDirectionValue));
            }

            if (!string.IsNullOrEmpty(bindingTypeValue) &&
                !Enum.TryParse <BindingType>(bindingTypeValue, true, out bindingType))
            {
                throw new FormatException(string.Format("'{0}' is not a valid binding type.", bindingTypeValue));
            }

            if (!string.IsNullOrEmpty(connection) &&
                string.IsNullOrEmpty(Utility.GetAppSettingOrEnvironmentValue(connection)))
            {
                throw new FormatException("Invalid Connection value specified.");
            }

            switch (bindingType)
            {
            case BindingType.EventHubTrigger:
            case BindingType.EventHub:
                bindingMetadata = binding.ToObject <EventHubBindingMetadata>();
                break;

            case BindingType.QueueTrigger:
            case BindingType.Queue:
                bindingMetadata = binding.ToObject <QueueBindingMetadata>();
                break;

            case BindingType.BlobTrigger:
            case BindingType.Blob:
                bindingMetadata = binding.ToObject <BlobBindingMetadata>();
                break;

            case BindingType.ServiceBusTrigger:
            case BindingType.ServiceBus:
                bindingMetadata = binding.ToObject <ServiceBusBindingMetadata>();
                break;

            case BindingType.HttpTrigger:
                bindingMetadata = binding.ToObject <HttpTriggerBindingMetadata>();
                break;

            case BindingType.Http:
                bindingMetadata = binding.ToObject <HttpBindingMetadata>();
                break;

            case BindingType.Table:
                bindingMetadata = binding.ToObject <TableBindingMetadata>();
                break;

            case BindingType.ManualTrigger:
                bindingMetadata = binding.ToObject <BindingMetadata>();
                break;

            case BindingType.TimerTrigger:
                bindingMetadata = binding.ToObject <TimerBindingMetadata>();
                break;

            case BindingType.EasyTable:
                bindingMetadata = binding.ToObject <EasyTableBindingMetadata>();
                break;

            case BindingType.DocumentDB:
                bindingMetadata = binding.ToObject <DocumentDBBindingMetadata>();
                break;

            case BindingType.NotificationHub:
                bindingMetadata = binding.ToObject <NotificationHubBindingMetadata>();
                break;

            case BindingType.ApiHub:
            case BindingType.ApiHubTrigger:
                bindingMetadata = binding.ToObject <ApiHubBindingMetadata>();
                break;
            }

            bindingMetadata.Type       = bindingType;
            bindingMetadata.Direction  = bindingDirection;
            bindingMetadata.Connection = connection;

            nameResolver.ResolveAllProperties(bindingMetadata);

            return(bindingMetadata);
        }
        private static BindingMetadata ParseBindingMetadata(JObject binding, INameResolver nameResolver)
        {
            BindingMetadata bindingMetadata = null;
            string bindingTypeValue = (string)binding["type"];
            string bindingDirectionValue = (string)binding["direction"];
            string connection = (string)binding["connection"];
            BindingType bindingType = default(BindingType);
            BindingDirection bindingDirection = default(BindingDirection);

            if (!string.IsNullOrEmpty(bindingDirectionValue) &&
                !Enum.TryParse<BindingDirection>(bindingDirectionValue, true, out bindingDirection))
            {
                throw new FormatException(string.Format(CultureInfo.InvariantCulture, "'{0}' is not a valid binding direction.", bindingDirectionValue));
            }

            if (!string.IsNullOrEmpty(bindingTypeValue) &&
                !Enum.TryParse<BindingType>(bindingTypeValue, true, out bindingType))
            {
                throw new FormatException(string.Format("'{0}' is not a valid binding type.", bindingTypeValue));
            }

            if (!string.IsNullOrEmpty(connection) && 
                string.IsNullOrEmpty(Utility.GetAppSettingOrEnvironmentValue(connection)))
            {
                throw new FormatException("Invalid Connection value specified.");
            }

            switch (bindingType)
            {
                case BindingType.EventHubTrigger:
                case BindingType.EventHub:
                    bindingMetadata = binding.ToObject<EventHubBindingMetadata>();
                    break;
                case BindingType.QueueTrigger:
                case BindingType.Queue:
                    bindingMetadata = binding.ToObject<QueueBindingMetadata>();
                    break;
                case BindingType.BlobTrigger:
                case BindingType.Blob:
                    bindingMetadata = binding.ToObject<BlobBindingMetadata>();
                    break;
                case BindingType.ServiceBusTrigger:
                case BindingType.ServiceBus:
                    bindingMetadata = binding.ToObject<ServiceBusBindingMetadata>();
                    break;
                case BindingType.HttpTrigger:
                    bindingMetadata = binding.ToObject<HttpTriggerBindingMetadata>();
                    break;
                case BindingType.Http:
                    bindingMetadata = binding.ToObject<HttpBindingMetadata>();
                    break;
                case BindingType.Table:
                    bindingMetadata = binding.ToObject<TableBindingMetadata>();
                    break;
                case BindingType.ManualTrigger:
                    bindingMetadata = binding.ToObject<BindingMetadata>();
                    break;
                case BindingType.TimerTrigger:
                    bindingMetadata = binding.ToObject<TimerBindingMetadata>();
                    break;
                case BindingType.EasyTable:
                    bindingMetadata = binding.ToObject<EasyTableBindingMetadata>();
                    break;
                case BindingType.DocumentDB:
                    bindingMetadata = binding.ToObject<DocumentDBBindingMetadata>();
                    break;
                case BindingType.NotificationHub:
                    bindingMetadata = binding.ToObject<NotificationHubBindingMetadata>();
                    break;
                case BindingType.ApiHub:
                case BindingType.ApiHubTrigger:
                    bindingMetadata = binding.ToObject<ApiHubBindingMetadata>();
                    break;
            }

            bindingMetadata.Type = bindingType;
            bindingMetadata.Direction = bindingDirection;
            bindingMetadata.Connection = connection;

            nameResolver.ResolveAllProperties(bindingMetadata);

            return bindingMetadata;
        }