internal void Validate()

in src/Microsoft.Azure.Relay/RelayConnectionStringBuilder.cs [209:264]


        internal void Validate()
        {
            if (this.Endpoint == null)
            {
                throw RelayEventSource.Log.ArgumentNull(nameof(Endpoint), TraceSource);
            }

            // if one supplied SharedAccessKeyName, they need to supply SharedAccessKey, and vise versa
            // if SharedAccessSignature is specified, Neither SasKey nor SasKeyName should not be specified
            var hasSharedAccessKeyName = !string.IsNullOrWhiteSpace(this.SharedAccessKeyName);
            var hasSharedAccessKey = !string.IsNullOrWhiteSpace(this.SharedAccessKey);

            var hasSharedAccessSignature = !string.IsNullOrWhiteSpace(this.SharedAccessSignature);
            if (hasSharedAccessSignature)
            {
                if (hasSharedAccessKeyName)
                {
                    throw RelayEventSource.Log.Argument(
                        SharedAccessSignatureConfigName + "," + SharedAccessKeyNameConfigName,
                        SR.GetString(SR.SasTokenShouldBeAlone, SharedAccessSignatureConfigName, SharedAccessKeyNameConfigName),
                        TraceSource);
                }

                if (hasSharedAccessKey)
                {
                    throw RelayEventSource.Log.Argument(
                        SharedAccessSignatureConfigName + "," + SharedAccessKeyConfigName,
                        SR.GetString(SR.SasTokenShouldBeAlone, SharedAccessSignatureConfigName, SharedAccessKeyConfigName),
                        TraceSource);
                }
            }
            else if ((hasSharedAccessKeyName && !hasSharedAccessKey) || (!hasSharedAccessKeyName && hasSharedAccessKey))
            {
                // SharedAccessKeyName + SharedAccessKey go together, cannot specify one without the other.
                throw RelayEventSource.Log.Argument(SharedAccessKeyNameConfigName + "," + SharedAccessKeyConfigName,
                    SR.GetString(SR.ArgumentInvalidCombination, SharedAccessKeyNameConfigName + "," + SharedAccessKeyConfigName),
                    TraceSource);
            }

            // Validate that the user has not specified the authentication type to be ManagedIdentity and also providing SAS values.
            if (this.Authentication == AuthenticationType.ManagedIdentity)
            {
                if (!string.IsNullOrWhiteSpace(this.SharedAccessKey))
                {
                    throw new ArgumentException(string.Format(SR.ArgumentInvalidCombination, $"{AuthenticationConfigName}, {nameof(SharedAccessKey)}"));
                }
                else if (!string.IsNullOrWhiteSpace(this.SharedAccessKeyName))
                {
                    throw new ArgumentException(string.Format(SR.ArgumentInvalidCombination, $"{AuthenticationConfigName}, {nameof(SharedAccessKeyName)}"));
                }
                else if (!string.IsNullOrWhiteSpace(this.SharedAccessSignature))
                {
                    throw new ArgumentException(string.Format(SR.ArgumentInvalidCombination, $"{AuthenticationConfigName}, {nameof(SharedAccessSignature)}"));
                }
            }
        }