private ServiceInfo( Uri healthServiceUrl, string healthVaultVersion, HealthServiceShellInfo shellInfo, IList<HealthServiceMethodInfo> methods, IList<Uri> includes, Dictionary<string, string> configurationValues) { _healthServiceUrl = healthServiceUrl; _healthVaultVersion = healthVaultVersion; _shellInfo = shellInfo; _methods = new ReadOnlyCollection<HealthServiceMethodInfo>(methods); _includes = new ReadOnlyCollection<Uri>(includes); if (configurationValues != null) { _configurationValues = configurationValues; } }
/// <summary> /// Constructs a <see cref="HealthServiceShellInfo"/> object from the /// supplied XML. /// </summary> /// /// <param name="nav"> /// An XPathNavigator to access the XML from which the /// <see cref="HealthServiceShellInfo"/> object will be constructed. /// </param> /// /// <returns> /// A <see cref="HealthServiceShellInfo"/> object. /// </returns> /// /// <exception cref="UriFormatException"> /// A URL string returned by HealthVault is /// invalid. /// </exception> /// internal static HealthServiceShellInfo CreateShellInfo( XPathNavigator nav) { Uri baseUrl = new Uri(nav.SelectSingleNode("url").Value); Uri redirectUrl = new Uri(nav.SelectSingleNode("redirect-url").Value); XPathNodeIterator tokenNavs = nav.Select("redirect-token"); List<HealthServiceShellRedirectToken> redirectTokens = new List<HealthServiceShellRedirectToken>(); foreach (XPathNavigator tokenNav in tokenNavs) { string token = tokenNav.SelectSingleNode("token").Value; string description = tokenNav.SelectSingleNode("description").Value; string queryParams = tokenNav.SelectSingleNode( "querystring-parameters").Value; string[] queryStringParameters = queryParams.Split(new Char[] { ',' }); HealthServiceShellRedirectToken redirectToken = new HealthServiceShellRedirectToken(token, description, queryStringParameters); redirectTokens.Add(redirectToken); } HealthServiceShellInfo shellInfo = new HealthServiceShellInfo(baseUrl, redirectUrl, redirectTokens); return shellInfo; }