/// <summary> /// An event handdler to summary the selected sessions /// Fire when user selects a session or switch tab /// If no session is selected, oSessions is an empty array /// </summary> private void DisplayResults(Session[] oSessions) { // If we're not at FeederNetInspector tab right now, reset our UI and bail out if (FiddlerApplication.UI.tabsViews.SelectedTab.Text != "FeederNetInspector") { container.Reset(); if (oSessions.Length > 0) { UnselectSessions(oSessions); } return; } // Filter sessions in the list view, keep only sessions that contain host name. FilterSessionListByHostName(container.GetHostName()); try { if (oSessions.Length < 1) { return; } Tuple <List <Request>, List <Response> > captureOutputTuple = GetRequestListResponseListAsTuple(oSessions); RequestSessionModel requestSessionModel = new RequestSessionModel(captureOutputTuple.Item1); ResponseSessionModel responseSessionModel = new ResponseSessionModel(captureOutputTuple.Item2); container.SetTbRequests(requestSessionModel); container.SetTbResponses(responseSessionModel); } catch (Exception e) { FiddlerApplication.Log.LogString(e.ToString()); MessageBox.Show(e.Message, "Errors"); } }
private void DisplayResults(Session[] oSessions) { // If we're not showing the Stats tab right now, bail out. if (FiddlerApplication.UI.tabsViews.SelectedTab.Text != "FeederNetInspector") { return; } try { if (oSessions.Length < 1) { return; } container.ToggleLabelLoading(); Tuple <string, string> captureOutputTuple = getCaptureOutputTuple(oSessions); RequestSessionModel requestSessionModel = new RequestSessionModel(); ResponseSessionModel responseSessionModel = new ResponseSessionModel(); requestSessionModel.RequestBody = captureOutputTuple.Item1; responseSessionModel.ResponseBody = captureOutputTuple.Item2; container.SetTbRequests(requestSessionModel); container.SetTbResponses(responseSessionModel); container.ToggleLabelLoading(); } catch (Exception e) { FiddlerApplication.Log.LogString(e.ToString()); MessageBox.Show(e.Message, "Errors"); } //Main.oSessions = oSessions; //FiddlerObject.uiInvoke(new MethodInvoker(UpdateUi)); // must marshal and synchronize to UI thread //FiddlerApplication.UI.BeginInvoke(new Action<string>(text => //{ //container.SetTbRequests(requestSessionModel); //container.SetTbResponses(responseSessionModel); //}), captureOutputTuple.Item1); }
public void SetTbResponses(ResponseSessionModel responseSessionModel) { tbResponse.Text = responseSessionModel.ResponseBody; }
public void SetTbResponses(ResponseSessionModel responseSessionModel) { // Clear list lvResponse.Items.Clear(); lvResponseIndicator.Items.Clear(); List <bool> responseIndicatorList = new List <bool>(); foreach (Response response in responseSessionModel.ResponseList) { // Construct Response Headers ListViewItem lviResponseHeaderHeading = new ListViewItem { Content = "Response Header", FontSize = 12, FontWeight = FontWeights.UltraBold, }; lvResponse.Items.Add(lviResponseHeaderHeading); responseIndicatorList.Add(false); string[] responseHeaderLines = response.ResponseHeaders.Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None); foreach (string line in responseHeaderLines) { lvResponse.Items.Add(line); responseIndicatorList.Add(false); } // Construct Response Body ListViewItem lviResponseBodyHeading = new ListViewItem { Content = "Response Body", FontSize = 12, FontWeight = FontWeights.UltraBold }; lvResponse.Items.Add(lviResponseBodyHeading); responseIndicatorList.Add(false); string[] responseBodyLines = (JsonHelper.FormatJson(response.ResponseBody)).Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None); foreach (string line in responseBodyLines) { bool isPersonalInformationExposed = false; foreach (PersonalInformation pi in response.PersonalInformationList) { if (line.Contains(pi.Value)) { isPersonalInformationExposed = true; break; } } if (isPersonalInformationExposed) { ListViewItem lvi = new ListViewItem { Content = line, FontSize = 12, Background = Brushes.Yellow, FontWeight = FontWeights.UltraBold, }; lvResponse.Items.Add(lvi); responseIndicatorList.Add(true); } else { lvResponse.Items.Add(line); responseIndicatorList.Add(false); } } } // lvResponseIndicator int lvResponseIndicatorItemHeight = (int)lvResponseIndicator.ActualHeight / responseIndicatorList.Count; for (int i = 0; i < responseIndicatorList.Count; i++) { if (responseIndicatorList[i]) { lvResponseIndicator.Items.Add(new ListViewItem { Content = "", Background = Brushes.Yellow, Height = lvResponseIndicatorItemHeight, }); } else { lvResponseIndicator.Items.Add(new ListViewItem { Content = "", Height = lvResponseIndicatorItemHeight, Visibility = Visibility.Hidden, IsEnabled = false, }); } } // tbDetails string details = ""; foreach (Response response in responseSessionModel.ResponseList) { foreach (PersonalInformation pi in response.PersonalInformationList) { details += "key: " + pi.Key + "\n"; details += "value: " + pi.Value + "\n"; } } tbDetails.Text = details; }