Beispiel #1
0
        /// <summary>
        /// Creates an instance from XML.
        /// </summary>
        ///
        /// <param name="containerNav">
        /// The container nav.
        /// </param>
        ///
        /// <param name="outerElement">
        /// The outer element.
        /// </param>
        ///
        /// <param name="dataElement">
        /// The data element.
        /// </param>
        ///
        /// <param name="contentTypeElement">
        /// The content type element.
        /// </param>
        ///
        /// <returns>
        /// Configuration data for an application which can be read from a file or stream
        /// and has an associated content type.
        /// </returns>
        ///
        internal static ApplicationBinaryConfiguration CreateFromXml(
            XPathNavigator containerNav,
            string outerElement,
            string dataElement,
            string contentTypeElement)
        {
            ApplicationBinaryConfiguration binaryConfig = null;
            XPathNavigator outerNav = containerNav.SelectSingleNode(outerElement);

            if (outerNav != null)
            {
                binaryConfig = new ApplicationBinaryConfiguration();
                binaryConfig.CultureSpecificBinaryConfigurationContents.PopulateFromXml(
                    outerNav,
                    dataElement);
                binaryConfig.ContentType = outerNav.SelectSingleNode(contentTypeElement).Value;
            }

            return(binaryConfig);
        }
Beispiel #2
0
        /// <summary>
        /// Creates an ApplicationInfo instance from the XML info section.
        /// </summary>
        ///
        /// <param name="app">
        /// The navigator.
        /// </param>
        ///
        /// <returns>
        /// A fully constructed ApplicationInfo object.
        /// </returns>
        ///
        internal static ApplicationInfo CreateFromInfoXml(XPathNavigator app)
        {
            ApplicationInfo appInfo = new ApplicationInfo {
                Id = new Guid(app.SelectSingleNode("id").Value)
            };

            appInfo.CultureSpecificNames.PopulateFromXml(app, "name");

            if (app.SelectSingleNode("restrict-app-users").ValueAsBoolean)
            {
                appInfo.SetApplicationOptions(ApplicationOptions.RestrictApplicationUsers);
            }

            if (app.SelectSingleNode("is-published").ValueAsBoolean)
            {
                appInfo.SetApplicationOptions(ApplicationOptions.PublishApplication);
            }

            string actionUrl = XPathHelper.GetOptNavValue(app, "action-url");

            if (!string.IsNullOrEmpty(actionUrl))
            {
                appInfo.ActionUrl = new Uri(actionUrl);
            }

            appInfo.CultureSpecificDescriptions.PopulateFromXml(app, "description");
            appInfo.CultureSpecificAuthorizationReasons.PopulateFromXml(app, "auth-reason");
            appInfo.DomainName = XPathHelper.GetOptNavValue(app, "domain-name");

            appInfo.LargeLogo = ApplicationBinaryConfiguration.CreateFromXml(
                app,
                "large-logo",
                "logo",
                "content-type");
            appInfo.SmallLogo = ApplicationBinaryConfiguration.CreateFromXml(
                app,
                "small-logo",
                "logo",
                "content-type");

            XPathNavigator persistentTokensNav = app.SelectSingleNode("persistent-tokens");

            if (persistentTokensNav != null)
            {
                bool persistentTokensEnabled = persistentTokensNav.SelectSingleNode("enabled")
                                               .ValueAsBoolean;

                if (persistentTokensEnabled)
                {
                    appInfo.SetApplicationOptions(ApplicationOptions.PersistentTokensAllowed);

                    XPathNavigator tokensTtlSecondsNav = persistentTokensNav.SelectSingleNode(
                        "token-ttl-seconds");

                    if (tokensTtlSecondsNav != null)
                    {
                        appInfo.PersistentTokenTtlInSeconds = tokensTtlSecondsNav.ValueAsInt;
                    }
                }
            }

            appInfo.OnlineBaseAuthorizations = AuthorizationRule.CreateFromXml(
                app.SelectSingleNode("person-online-base-auth-xml"));

            XPathNavigator personOfflineBaseAuthNav =
                app.SelectSingleNode("person-offline-base-auth-xml");

            if (personOfflineBaseAuthNav != null)
            {
                appInfo.OfflineBaseAuthorizations = AuthorizationRule.CreateFromXml(
                    personOfflineBaseAuthNav);
            }

            appInfo.PrivacyStatement = ApplicationBinaryConfiguration.CreateFromXml(
                app,
                "privacy-statement",
                "statement",
                "content-type");
            appInfo.TermsOfUse = ApplicationBinaryConfiguration.CreateFromXml(
                app,
                "terms-of-use",
                "statement",
                "content-type");
            appInfo.DtcSuccessMessage = ApplicationBinaryConfiguration.CreateFromXml(
                app,
                "dtc-success-message",
                "statement",
                "content-type");

            XPathNavigator attributesNav = app.SelectSingleNode("app-attributes");

            if (attributesNav != null)
            {
                XPathNodeIterator attributesIterator = attributesNav.Select("app-attribute");
                foreach (XPathNavigator attributeNav in attributesIterator)
                {
                    appInfo.ApplicationAttributes.Add(attributeNav.Value);
                }
            }

            XPathNavigator ipPrefixesNav = app.SelectSingleNode("valid-ip-prefixes");

            if (ipPrefixesNav != null)
            {
                appInfo.ValidIPPrefixes = ipPrefixesNav.Value;
            }

            appInfo.ClientServiceToken =
                XPathHelper.GetOptNavValueAsGuid(app, "client-service-token");

            XPathNavigator vocabularyAuthorizationsNav =
                app.SelectSingleNode("vocabulary-authorizations");

            if (vocabularyAuthorizationsNav != null)
            {
                appInfo.VocabularyAuthorizations =
                    VocabularyAuthorization.CreateFromXml(vocabularyAuthorizationsNav);
            }

            XPathNavigator childVocabularyAuthCeilingNav =
                app.SelectSingleNode("child-vocabulary-authorizations-ceiling");

            if (childVocabularyAuthCeilingNav != null)
            {
                appInfo.ChildVocabularyAuthorizationsCeiling =
                    VocabularyAuthorization.CreateFromXml(vocabularyAuthorizationsNav);
            }

            XPathNavigator supportedRecordLocationsIterator =
                app.SelectSingleNode("supported-record-locations");

            if (supportedRecordLocationsIterator != null)
            {
                LocationCollection locationCollection = new LocationCollection();
                locationCollection.ParseXml(supportedRecordLocationsIterator);
                appInfo.SupportedRecordLocations = locationCollection;
            }

            foreach (XPathNavigator instanceIdNav in app.Select("supported-instances/instance-id"))
            {
                appInfo.SupportedHealthVaultInstances.Add(instanceIdNav.Value);
            }

            XPathNavigator instancesNode             = app.SelectSingleNode("supported-instances");
            string         supportAllInstancesString = instancesNode?.GetAttribute("support-all-instances", string.Empty);

            if (!string.IsNullOrEmpty(supportAllInstancesString))
            {
                appInfo.SupportAllHealthVaultInstances = XmlConvert.ToBoolean(supportAllInstancesString);
            }

            foreach (XPathNavigator meaningfulUseSourceNav in app.Select("meaningful-use-sources/source"))
            {
                appInfo.MeaningfulUseSources.Add(meaningfulUseSourceNav.Value);
            }

            XPathNavigator bulkExtractionSettingsNav = app.SelectSingleNode("bulk-extraction-settings");

            if (bulkExtractionSettingsNav != null)
            {
                XPathNavigator isOnboardedNav = bulkExtractionSettingsNav.SelectSingleNode("is-onboarded");
                if (isOnboardedNav != null)
                {
                    appInfo.IsOnboardedToBdp = isOnboardedNav.ValueAsBoolean;
                }

                XPathNavigator isPermissionRequired = bulkExtractionSettingsNav.SelectSingleNode("is-permission-required");
                if (isPermissionRequired != null)
                {
                    appInfo.IsBulkExtractionPermissionRequired = isPermissionRequired.ValueAsBoolean;
                }
            }

            return(appInfo);
        }