private string ResolveTriggerAttributeHostname(RethinkDbTriggerAttribute triggerAttribute)
        {
            string hostname = null;

            if (!String.IsNullOrEmpty(triggerAttribute.HostnameSetting))
            {
                hostname = _configuration.GetConnectionStringOrSetting(triggerAttribute.HostnameSetting);

                if (String.IsNullOrEmpty(hostname))
                {
                    throw new InvalidOperationException(String.Format(UNABLE_TO_RESOLVE_APP_SETTING_FORMAT, nameof(RethinkDbTriggerAttribute), nameof(RethinkDbTriggerAttribute.HostnameSetting)));
                }

                return(hostname);
            }

            hostname = _options.Hostname;

            if (String.IsNullOrEmpty(hostname))
            {
                throw new InvalidOperationException($"The RethinkDbTriggerAttribute hostname must be set either via a '{nameof(RethinkDbOptions.Hostname)}' configuration setting, via the '{nameof(RethinkDbTriggerAttribute)}.{nameof(RethinkDbTriggerAttribute.HostnameSetting)}' property or via '{nameof(RethinkDbOptions)}.{nameof(RethinkDbOptions.Hostname)}'.");
            }

            return(hostname);
        }
 private TableOptions ResolveTriggerTableOptions(RethinkDbTriggerAttribute triggerAttribute)
 {
     return(new TableOptions(
                ResolveAttributeValue(triggerAttribute.DatabaseName),
                ResolveAttributeValue(triggerAttribute.TableName)
                ));
 }
 private ConnectionOptions ResolveTriggerConnectionOptions(RethinkDbTriggerAttribute triggerAttribute)
 {
     return(new ConnectionOptions(
                ResolveTriggerAttributeHostname(triggerAttribute),
                ResolveTriggerAttributePort(triggerAttribute),
                ResolveTriggerAttributeSetting(triggerAttribute.AuthorizationKeySetting, _options.AuthorizationKey),
                ResolveTriggerAttributeSetting(triggerAttribute.UserSetting, _options.User),
                ResolveTriggerAttributeSetting(triggerAttribute.PasswordSetting, _options.Password),
                ResolveTriggerAttributeEnableSsl(triggerAttribute),
                ResolveTriggerAttributeSetting(triggerAttribute.LicenseToSetting, _options.LicenseTo),
                ResolveTriggerAttributeSetting(triggerAttribute.LicenseKeySetting, _options.LicenseKey)
                ));
 }
        private bool ResolveTriggerAttributeEnableSsl(RethinkDbTriggerAttribute triggerAttribute)
        {
            if (!String.IsNullOrEmpty(triggerAttribute.EnableSslSetting))
            {
                string enableSslString = _configuration.GetConnectionStringOrSetting(triggerAttribute.EnableSslSetting);

                if (String.IsNullOrEmpty(enableSslString) || !Boolean.TryParse(enableSslString, out bool enableSsl))
                {
                    throw new InvalidOperationException(String.Format(UNABLE_TO_RESOLVE_APP_SETTING_FORMAT, nameof(RethinkDbTriggerAttribute), nameof(RethinkDbTriggerAttribute.EnableSslSetting)));
                }

                return(enableSsl);
            }

            return(_options.EnableSsl);
        }
        private int?ResolveTriggerAttributePort(RethinkDbTriggerAttribute triggerAttribute)
        {
            if (!String.IsNullOrEmpty(triggerAttribute.PortSetting))
            {
                string portString = _configuration.GetConnectionStringOrSetting(triggerAttribute.PortSetting);

                if (String.IsNullOrEmpty(portString) || !Int32.TryParse(portString, out int port))
                {
                    throw new InvalidOperationException(String.Format(UNABLE_TO_RESOLVE_APP_SETTING_FORMAT, nameof(RethinkDbTriggerAttribute), nameof(RethinkDbTriggerAttribute.PortSetting)));
                }

                return(port);
            }

            return(_options.Port);
        }
        public Task <ITriggerBinding> TryCreateAsync(TriggerBindingProviderContext context)
        {
            if (context is null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            ParameterInfo parameter = context.Parameter;

            RethinkDbTriggerAttribute triggerAttribute = parameter.GetCustomAttribute <RethinkDbTriggerAttribute>(inherit: false);

            if (triggerAttribute is null)
            {
                return(_nullTriggerBindingTask);
            }

            ConnectionOptions  triggerConnectionOptions = ResolveTriggerConnectionOptions(triggerAttribute);
            Task <IConnection> triggerConnectionTask    = _rethinkDBConnectionFactory.GetConnectionAsync(triggerConnectionOptions);

            TableOptions triggerTableOptions = ResolveTriggerTableOptions(triggerAttribute);

            return(Task.FromResult <ITriggerBinding>(new RethinkDbTriggerBinding(parameter, triggerConnectionTask, triggerTableOptions, triggerAttribute.IncludeTypes)));
        }
コード例 #7
0
        public void Constructor_ValidDatabaseNameValidTableName_SetsTableName()
        {
            RethinkDbTriggerAttribute attribute = new RethinkDbTriggerAttribute(SOME_DATABASE_NAME, SOME_TABLE_NAME);

            Assert.Equal(SOME_TABLE_NAME, attribute.TableName);
        }