// IClientPropertyHandler
        public async Task <CommandStatus> OnDesiredPropertyChange(JToken desiredValue)
        {
            if (!(desiredValue is JObject))
            {
                throw new Error(ErrorCodes.INVALID_DESIRED_JSON_VALUE, "Invalid json value type for the " + PropertySectionName + " node.");
            }

            ExternalStorageDataContract.DesiredProperties desiredProperties = ExternalStorageDataContract.DesiredProperties.FromJsonObject((JObject)desiredValue);
            ConnectionString = desiredProperties.connectionString;

            // Report to the device twin....
            var reportedProperties = await GetReportedPropertyAsync();

            await _callback.ReportPropertiesAsync(PropertySectionName, reportedProperties);

            return(CommandStatus.Committed);
        }
 private void OnSetExternalStorageInfo(object sender, RoutedEventArgs e)
 {
     ExternalStorageDataContract.DesiredProperties desiredProperties = new ExternalStorageDataContract.DesiredProperties();
     desiredProperties.connectionString = AzureStorageDesiredConnectionString.Text;
     SetDesired(ExternalStorageDataContract.SectionName, desiredProperties.ToJsonString()).FireAndForget();
 }
        /// <summary>
        /// Install a certificate via device twin.
        /// </summary>
        private async void InstallCertButton_ClickAsync(object sender, RoutedEventArgs e)
        {
            if (App.STORAGECONNSTRING.Length == 0)
            {
                _mainPage.ShowDialogAsync("Missing Connection String", "Please enter the Storage Connection String in Settings");
                return;
            }

            string certHashInstall = CertHashInstallInput.Text;
            string certFileName    = CertFileNameInput.Text;

            if (certHashInstall.Length == 0 || certFileName.Length == 0)
            {
                _mainPage.ShowDialogAsync("Invaid Input", "Please enter all fields to Install certificate");
                return;
            }

            ExternalStorageDataContract.DesiredProperties desiredProperties = new ExternalStorageDataContract.DesiredProperties();
            desiredProperties.connectionString = App.STORAGECONNSTRING;

            CertificatesDataContract.CertificateInfo certificateInfo = new CertificatesDataContract.CertificateInfo();
            certificateInfo.Hash            = certHashInstall;
            certificateInfo.StorageFileName = certFileName;
            certificateInfo.State           = CertificatesDataContract.JsonStateInstalled;

            CertificatesDataContract.DesiredProperties certDesiredProperties = new CertificatesDataContract.DesiredProperties();
            switch (CertPathInstallCombobox.SelectedValue)
            {
            case CertificateStore.rootCATrustedCertificates_Root:
                certDesiredProperties.rootCATrustedCertificates_Root.Add(certificateInfo);
                break;

            case CertificateStore.rootCATrustedCertificates_CA:
                certDesiredProperties.rootCATrustedCertificates_CA.Add(certificateInfo);
                break;

            case CertificateStore.rootCATrustedCertificates_TrustedPublisher:
                certDesiredProperties.rootCATrustedCertificates_TrustedPublisher.Add(certificateInfo);
                break;

            case CertificateStore.rootCATrustedCertificates_TrustedPeople:
                certDesiredProperties.rootCATrustedCertificates_TrustedPeople.Add(certificateInfo);
                break;

            case CertificateStore.certificateStore_CA_System:
                certDesiredProperties.certificateStore_CA_System.Add(certificateInfo);
                break;

            case CertificateStore.certificateStore_Root_System:
                certDesiredProperties.certificateStore_Root_System.Add(certificateInfo);
                break;

            case CertificateStore.certificateStore_My_User:
                certDesiredProperties.certificateStore_My_User.Add(certificateInfo);
                break;

            case CertificateStore.certificateStore_My_System:
                certDesiredProperties.certificateStore_My_System.Add(certificateInfo);
                break;

            default:
                break;
            }

            string refreshingValue = "\"refreshing\"";
            string finalValue      = "{" + desiredProperties.ToJsonString() + ", " + certDesiredProperties.ToJsonString() + "}";
            await _mainPage.UpdateTwinData(refreshingValue, finalValue);
        }