Beispiel #1
0
        // methods
        private async Task SendRequestFromGUI()
        {
            infoTextBlock.Text = "Loading ...";

            rawTextBlock.Document.Blocks.Clear();
            FullTextBlock.Document.Blocks.Clear();
            previewHTML.Navigate((Uri)null);

            try
            {
                Requester.Requester cm             = new Requester.Requester();
                string url                         = urlTextBox.Text;
                string method                      = methodComboBox.Text;
                Dictionary <string, string> header = new Dictionary <string, string>();

                foreach (Requester.DataGridValue item in dataGridHeader.Items.SourceCollection)
                {
                    if (item.active && item.key != null)
                    {
                        header.Add(item.key, item.value);
                    }
                }

                string body = new TextRange(
                    bodyTextBlock.Document.ContentStart,
                    bodyTextBlock.Document.ContentEnd
                    ).Text;

                Dictionary <string, string> dataGridParamsInDictionary = new Dictionary <string, string>();
                foreach (Requester.DataGridValue item in dataGridParams.Items.SourceCollection)
                {
                    if (item.active)
                    {
                        dataGridParamsInDictionary.Add(item.key, item.value);
                    }
                }
                url = cm.ApplyParamsToUrl(url, dataGridParamsInDictionary);


                RequestResponse response = await cm.Send(method, url, body, header);

                if (response.content != null && response.content != "")
                {
                    previewHTML.NavigateToString(response.content);
                }

                rawTextBlock.Document.Blocks.Add(new Paragraph(new Run(response.content)));

                // make slowest part in parallel
                formatedRichTextBox.Dispatcher.Invoke(new Action(() =>
                {
                    var output = formatedRichTextBox;
                    output.Document.Blocks.Clear();
                    Beautifier beautifier = new Beautifier();
                    beautifier.BeautyRichTextBox(response.content, output);
                }));

                FullTextBlock.Document.Blocks.Add(new Paragraph(new Run(response.statusCode.Key + " (" + response.statusCode.Value + ")")));
                FullTextBlock.Document.Blocks.Add(new Paragraph(new Run(response.header)));
                FullTextBlock.Document.Blocks.Add(new Paragraph(new Run(response.timing + "ms")));
                FullTextBlock.Document.Blocks.Add(new Paragraph(new Run(response.content)));

                StatusCodeTextBox.Text = response.statusCode.Key + " (" + response.statusCode.Value + ")";
                string[] statusCodeColors = new string[] {
                    "#bdbdbd",                     // 1xx
                    "#2e7d32",                     // 2xx
                    "#1565c0",                     // 3xx
                    "#c62828",                     // 4xx
                    "#6a1b9a",                     // 5xx
                };
                StatusCodeTextBox.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom(statusCodeColors[(int)(response.statusCode.Key / 100 - 1)]));

                infoTextBlock.Text = "Loading complete";
            }
            catch (Exception e)
            {
                if (e.InnerException != null)
                {
                    StatusCodeTextBox.Text       = "404 (Page Not Found)";
                    StatusCodeTextBox.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#c62828"));
                    infoTextBlock.Text           = e.InnerException.Message;
                }
                else
                {
                    infoTextBlock.Text = e.Message;
                }
            }
        }