/// <summary> /// Gets the repository. /// </summary> /// <param name="settings">The settings.</param> /// <returns>The entity repository.</returns> public EntityRepositoryBase GetRepository(CRMSecurityProvider.Configuration.ConfigurationSettings settings) { return(this.Resolve <EntityRepositoryBase>(settings)); }
/// <summary> /// Parses the specified connection string. /// </summary> /// <param name="connectionString">The connection string.</param> /// <returns>The configuration settings.</returns> public static ConfigurationSettings Parse(string connectionString) { Assert.ArgumentNotNullOrEmpty(connectionString, "connectionString"); if (!connectionString.StartsWith("crm:", StringComparison.InvariantCultureIgnoreCase)) { throw new NotSupportedException("Connection string is not supported: " + connectionString); } connectionString = connectionString.Substring(4); var connectionValues = StringUtil.GetNameValues(connectionString, '=', ';'); var settings = new ConfigurationSettings(); settings.Url = connectionValues["url"]; if (String.IsNullOrEmpty(settings.Url)) { throw new NotSupportedException("Connection string without 'url' is not supported."); } settings.Url = settings.Url.ToLower(); settings.User = connectionValues["user id"]; if (String.IsNullOrEmpty(settings.User)) { throw new NotSupportedException("Connection string without 'user id' is not supported."); } settings.Password = connectionValues["password"]; if (String.IsNullOrEmpty(settings.Password)) { throw new NotSupportedException("Connection string without 'password' is not supported."); } settings.Organization = connectionValues["organization"]; if (String.IsNullOrEmpty(settings.Organization)) { throw new NotSupportedException("Connection string without 'organization' is not supported."); } if (settings.Url.Contains("/2006/")) { settings.ApiVersion = ApiVersion.V3; } else if (settings.Url.Contains("/2007/")) { settings.ApiVersion = ApiVersion.V4; } else if (settings.Url.Contains("/2011/")) { settings.ApiVersion = ApiVersion.V5; } else { throw new NotSupportedException("Connection string is not supported: " + connectionString); } var stringAuthenticationType = connectionValues["authentication type"]; if (String.IsNullOrEmpty(stringAuthenticationType)) { throw new NotSupportedException("Connection string without 'authentication type' is not supported."); } int authenticationType; if (!Int32.TryParse(stringAuthenticationType, out authenticationType)) { throw new ArgumentException("Connection string contains wrong 'authentication type'."); } settings.AuthenticationType = (AuthenticationType)authenticationType; settings.Partner = connectionValues["partner"] ?? String.Empty; settings.Environment = connectionValues["environment"] ?? String.Empty; settings.UnsafeAuthenticatedConnectionSharing = MainUtil.GetBool(connectionValues["unsafeauthenticatedconnectionsharing"], true); settings.PreAuthenticate = MainUtil.GetBool(connectionValues["preauthenticate"], true); return(settings); }