/// <summary>
        ///     Makes a PUT call to the Api service
        /// </summary>
        /// <param name="client">the LiveConnectClient object this method is attached to.</param>
        /// <param name="path">relative path to the resource to be updated.</param>
        /// <param name="body">properties of the updated resource in json.</param>
        public static Task <LiveOperationResult> Put(this LiveConnectClient client, string path, string body)
        {
            client.PutCompleted += OnOperationCompleted;
            var tcs = new TaskCompletionSource <LiveOperationResult>();

            client.PutAsync(path, body, new OperationState <LiveOperationResult>(tcs, client, ApiMethod.Put));

            return(tcs.Task);
        }
        private async void RunButton_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                // Validate parameters
                string path = pathTextBox.Text;
                string destination = destinationTextBox.Text;
                string requestBody = requestBodyTextBox.Text;
                var scope = (authScopesComboBox.SelectedValue as ComboBoxItem).Content as string;
                var method = (methodsComboBox.SelectedValue as ComboBoxItem).Content as string;

                // acquire auth permissions
                var authClient = new LiveAuthClient();
                var authResult = await authClient.LoginAsync(new string[] { scope });
                if (authResult.Session == null)
                {
                    throw new InvalidOperationException("You need to login and give permission to the app.");
                }

                var liveConnectClient = new LiveConnectClient(authResult.Session);
                LiveOperationResult operationResult = null;
                switch (method)
                {
                    case "GET":
                        operationResult = await liveConnectClient.GetAsync(path);
                        break;
                    case "POST":
                        operationResult = await liveConnectClient.PostAsync(path, requestBody);
                        break;
                    case "PUT":
                        operationResult = await liveConnectClient.PutAsync(path, requestBody);
                        break;
                    case "DELETE":
                        operationResult = await liveConnectClient.DeleteAsync(path);
                        break;
                    case "COPY":
                        operationResult = await liveConnectClient.CopyAsync(path, destination);
                        break;
                    case "MOVE":
                        operationResult = await liveConnectClient.MoveAsync(path, destination);
                        break;
                }

                if (operationResult != null)
                {
                    Log("Operation succeeded: \r\n" + operationResult.RawResult);
                }
            }
            catch (Exception ex)
            {
                Log("Got error: " + ex.Message);
            }
        }
        void ButtonOK_Click(object sender, RoutedEventArgs e)
        {
            //Is 'new list name' TextBox.Text Empty?
            if (editNameDlg.DialogData.Text.Trim() != String.Empty)
            {
                Dictionary<string, object> fileData = new Dictionary<string, object>();
                fileData.Add("name", editNameDlg.DialogData.Text.Trim() + ".txt");

                editNameDlg.Deactivate();

                //Set SystemTray.ProgressIndicator
                ProgressIndicator prog = new ProgressIndicator();
                prog.IsIndeterminate = true;
                prog.IsVisible = true;
                prog.Text = "File renaming...";
                SystemTray.SetProgressIndicator(this, prog);

                LiveConnectClient client = new LiveConnectClient(this.LiveSession);
                client.PutCompleted += new EventHandler<LiveOperationCompletedEventArgs>(client_PutCompleted);
                client.PutAsync(this.renameFileId, fileData);
            }
        }