Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Ior/Core/ResponseBodyOutput.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
namespace Swensen.Ior.Core {
public enum ResponseBodyOutput {
Hex, Plain, Pretty, Rendered
Hex, Plain, Pretty, Rendered, Regex
}
}
47 changes: 47 additions & 0 deletions Ior/Forms/MainForm.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

62 changes: 60 additions & 2 deletions Ior/Forms/MainForm.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
using NLog;
using System.Xml;
using System.Xml.Serialization;
using System.Text.RegularExpressions;

//examples response types:
//xml: http://www.w3schools.com/xml/note.asp
Expand Down Expand Up @@ -258,6 +259,7 @@ private void bindResponseBodyOutputs() {
rbResponseBodyOutputPlain.Tag = ResponseBodyOutput.Plain;
rbResponseBodyOutputPretty.Tag = ResponseBodyOutput.Pretty;
rbResponseBodyOutputBrowser.Tag = ResponseBodyOutput.Rendered;
rbResponseBodyOutputRegex.Tag = ResponseBodyOutput.Regex;

foreach (var rb in rbGrpResponseBodyOutputs) {
rb.CheckedChanged += new EventHandler(rbGrpResponseBodyOutput_CheckedChanged);
Expand All @@ -279,18 +281,24 @@ private void updateResponseBodyOutput() {
txtResponseText.Visible = false;
wbResponseBody.Visible = false;
bvResponseBody.Visible = true;
txtRegex.Visible = false;
btnApplyRegex.Visible = false;
bvResponseBody.SetBytes(lastResponseModel.ContentBytes ?? new byte[0]);
break;
case ResponseBodyOutput.Plain:
txtResponseText.Visible = true;
wbResponseBody.Visible = false;
bvResponseBody.Visible = false;
txtRegex.Visible = false;
btnApplyRegex.Visible = false;
txtResponseText.Text = lastResponseModel.Content;
break;
case ResponseBodyOutput.Pretty:
txtResponseText.Visible = true;
wbResponseBody.Visible = false;
bvResponseBody.Visible = false;
txtRegex.Visible = false;
btnApplyRegex.Visible = false;
txtResponseText.Text = lastResponseModel.PrettyPrintedContent;
var mtc = lastResponseModel.ContentType.MediaTypeCategory;
txtResponseText.ConfigurationManager.Language =
Expand All @@ -305,6 +313,8 @@ private void updateResponseBodyOutput() {
txtResponseText.Visible = false;
wbResponseBody.Visible = true;
bvResponseBody.Visible = false;
txtRegex.Visible = false;
btnApplyRegex.Visible = false;

if ((lastResponseModel.ContentType.MediaTypeCategory == IorMediaTypeCategory.Xml ||
lastResponseModel.ContentType.MediaTypeCategory == IorMediaTypeCategory.Application) &&
Expand All @@ -325,9 +335,41 @@ private void updateResponseBodyOutput() {
break;
}
}

wbResponseBody.Refresh();
break;
break;
case ResponseBodyOutput.Regex:
txtResponseText.Visible = true;
wbResponseBody.Visible = false;
bvResponseBody.Visible = false;
txtRegex.Visible = true;
btnApplyRegex.Visible = true;

String content = lastResponseModel.Content;
String response = content;

if (content != null && txtRegex.Text != "") {
Regex rx = null;

try {
rx = new Regex(txtRegex.Text);
} catch {
MessageBox.Show("Incorrect regex. Please enter correct Regex.");
}

if (rx != null) {
MatchCollection matches = rx.Matches(content);
response = "";

foreach (Match match in matches)
{
response += match.Value + Environment.NewLine;
}
}
}

txtResponseText.Text = response;
break;

}
}

Expand All @@ -349,6 +391,18 @@ private void cancelAsyncRequest() {
bind(ResponseModel.Empty);
}
}

private void txtRegex_Enter(object sender, EventArgs e) {
this.AcceptButton = btnApplyRegex;
}

private void txtRegex_Leave(object sender, EventArgs e) {
this.AcceptButton = btnSubmitRequest;
}

private void btnApplyRegex_Click(object sender, EventArgs e) {
updateResponseBodyOutput();
}

private void btnSubmitRequest_Click(object sender, EventArgs e)
{
Expand Down Expand Up @@ -604,6 +658,10 @@ private void txtRequestBody_TextChanged(object sender, EventArgs e) {
private void txtRequestHeaders_TextChanged(object sender, EventArgs e) {
setIsLastOpenedRequestFileDirtyToTrue();
}

private void txtRegex_TextChanged(object sender, EventArgs e) {
updateResponseBodyOutput();
}

//scintilla does not support link clicked event
//private void txtResponseText_LinkClicked(object sender, LinkClickedEventArgs e) {
Expand Down
1 change: 1 addition & 0 deletions Ior/Ior.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@
<Private>True</Private>
</Reference>
<Reference Include="System.Net.Http.WebRequest" />
<Reference Include="System.Text.RegularExpressions" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Data" />
Expand Down