public async Task <WindowsUpdateRingState> GetRingAsync()
        {
            var request  = new Message.GetWindowsUpdatePolicyRequest();
            var response = await _systemConfiguratorProxy.SendCommandAsync(request) as Message.GetWindowsUpdatePolicyResponse;

            WindowsUpdateRingState state = new WindowsUpdateRingState();

            state.ring             = WindowsUpdateRingState.RingFromJsonString(response.data.ring);
            state.settingsPriority = SettingsPriorityFromString(response.data.policy.source);
            return(state);
        }
        public async Task SetRingAsync(WindowsUpdateRingState userDesiredState)
        {
            // Construct the request and send it...
            Message.Policy policy = new Message.Policy();
            policy.source           = Message.PolicySource.Local;
            policy.sourcePriorities = userDesiredState.settingsPriority == SettingsPriority.Local ? PolicyHelpers.PriorityLocal : PolicyHelpers.PriorityRemote;

            Message.SetWindowsUpdatePolicyRequest request = new Message.SetWindowsUpdatePolicyRequest();
            request.ApplyFromDeviceTwin = WindowsUpdatePolicyDataContract.JsonYes;
            request.data = new Message.WindowsUpdatePolicyConfiguration();
            request.data.activeFields  = (uint)Message.ActiveFields.Ring;
            request.data.ring          = WindowsUpdateRingState.RingToJsonString(userDesiredState.ring);
            request.data.policy        = policy;
            request.ReportToDeviceTwin = Constants.JsonValueUnspecified;    // Keep whatever already stored.
            await _systemConfiguratorProxy.SendCommandAsync(request);

            await ReportToDeviceTwin();
        }
 public async Task SetWindowsUpdateRingAsync(WindowsUpdateRingState state)
 {
     await _windowsUpdatePolicyHandler.SetRingAsync(state);
 }