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))); }
public void Constructor_ValidDatabaseNameValidTableName_SetsTableName() { RethinkDbTriggerAttribute attribute = new RethinkDbTriggerAttribute(SOME_DATABASE_NAME, SOME_TABLE_NAME); Assert.Equal(SOME_TABLE_NAME, attribute.TableName); }