Commit 0fcf964a authored by Honfika's avatar Honfika

Mulipart form data sample added, first dispose the reaaders/writers then the stream

parent 2c738ae1
......@@ -143,7 +143,7 @@ namespace Titanium.Web.Proxy.Examples.Basic
}
//intecept & cancel redirect or update requests
public async Task OnRequest(object sender, SessionEventArgs e)
private async Task OnRequest(object sender, SessionEventArgs e)
{
Console.WriteLine("Active Client Connections:" + ((ProxyServer)sender).ClientConnectionCount);
Console.WriteLine(e.WebSession.Request.Url);
......@@ -151,6 +151,14 @@ namespace Titanium.Web.Proxy.Examples.Basic
//read request headers
requestHeaderHistory[e.Id] = e.WebSession.Request.Headers;
////This sample shows how to get the multipart form data headers
////Do not read the body (GetRequestBody or GetResponseBodyAsString) in this case
////otherwise you have to parse the headers from the returned body data
//if (e.WebSession.Request.Host == "mail.yahoo.com" && e.WebSession.Request.IsMultipartFormData)
//{
// e.MultipartRequestPartSent += MultipartRequestPartSent;
//}
if (e.WebSession.Request.HasBody)
{
//Get/Set request body bytes
......@@ -185,7 +193,17 @@ namespace Titanium.Web.Proxy.Examples.Basic
}
//Modify response
public async Task OnResponse(object sender, SessionEventArgs e)
private void MultipartRequestPartSent(object sender, MultipartRequestPartSentEventArgs e)
{
var session = (SessionEventArgs)sender;
Console.WriteLine("Multipart form data headers:");
foreach (var header in e.Headers)
{
Console.WriteLine(header);
}
}
private async Task OnResponse(object sender, SessionEventArgs e)
{
Console.WriteLine("Active Server Connections:" + ((ProxyServer)sender).ServerConnectionCount);
......
......@@ -15,7 +15,7 @@ namespace Titanium.Web.Proxy.Network
internal TcpClient TcpClient { get; set; }
/// <summary>
/// holds the stream to client
/// Holds the stream to client
/// </summary>
internal CustomBufferedStream ClientStream { get; set; }
......@@ -25,7 +25,7 @@ namespace Titanium.Web.Proxy.Network
internal CustomBinaryReader ClientStreamReader { get; set; }
/// <summary>
/// used to write line by line to client
/// Used to write line by line to client
/// </summary>
internal HttpResponseWriter ClientStreamWriter { get; set; }
}
......
......@@ -35,10 +35,13 @@ namespace Titanium.Web.Proxy.Network.Tcp
internal TcpClient TcpClient { private get; set; }
/// <summary>
/// used to read lines from server
/// Used to read lines from server
/// </summary>
internal CustomBinaryReader StreamReader { get; set; }
/// <summary>
/// Used to write lines to server
/// </summary>
internal HttpRequestWriter StreamWriter { get; set; }
/// <summary>
......@@ -61,11 +64,11 @@ namespace Titanium.Web.Proxy.Network.Tcp
/// </summary>
public void Dispose()
{
Stream?.Dispose();
StreamReader?.Dispose();
StreamWriter?.Dispose();
Stream?.Dispose();
try
{
if (TcpClient != null)
......
......@@ -612,11 +612,11 @@ namespace Titanium.Web.Proxy
/// <param name="serverConnection"></param>
private void Dispose(CustomBufferedStream clientStream, CustomBinaryReader clientStreamReader, HttpResponseWriter clientStreamWriter, TcpConnection serverConnection)
{
clientStream?.Dispose();
clientStreamReader?.Dispose();
clientStreamWriter?.Dispose();
clientStream?.Dispose();
if (serverConnection != null)
{
serverConnection.Dispose();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment