Commit 730d4866 authored by Honfika's avatar Honfika

Request, Response Properties renamed

C# language changed to C# 7.1
parent 8faf2835
......@@ -147,7 +147,7 @@ namespace Titanium.Web.Proxy.Examples.Basic
Console.WriteLine(e.WebSession.Request.Url);
//read request headers
requestHeaderHistory[e.Id] = e.WebSession.Request.RequestHeaders;
requestHeaderHistory[e.Id] = e.WebSession.Request.Headers;
if (e.WebSession.Request.HasBody)
{
......@@ -194,7 +194,7 @@ namespace Titanium.Web.Proxy.Examples.Basic
//}
//read response headers
responseHeaderHistory[e.Id] = e.WebSession.Response.ResponseHeaders;
responseHeaderHistory[e.Id] = e.WebSession.Response.Headers;
// print out process id of current session
//Console.WriteLine($"PID: {e.WebSession.ProcessId.Value}");
......@@ -202,7 +202,7 @@ namespace Titanium.Web.Proxy.Examples.Basic
//if (!e.ProxySession.Request.Host.Equals("medeczane.sgk.gov.tr")) return;
if (e.WebSession.Request.Method == "GET" || e.WebSession.Request.Method == "POST")
{
if (e.WebSession.Response.ResponseStatusCode == (int)HttpStatusCode.OK)
if (e.WebSession.Response.StatusCode == (int)HttpStatusCode.OK)
{
if (e.WebSession.Response.ContentType != null && e.WebSession.Response.ContentType.Trim().ToLower().Contains("text/html"))
{
......
......@@ -4,7 +4,7 @@
<OutputType>Exe</OutputType>
<TargetFrameworks>net45;netcoreapp2.0</TargetFrameworks>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<LangVersion>6</LangVersion>
<LangVersion>7.1</LangVersion>
</PropertyGroup>
<PropertyGroup>
......
......@@ -122,7 +122,7 @@ namespace Titanium.Web.Proxy.Examples.Wpf
if (e.WebSession.Request.HasBody)
{
e.WebSession.Request.KeepRequestBody = true;
e.WebSession.Request.KeepBody = true;
await e.GetRequestBody();
}
}
......@@ -144,7 +144,7 @@ namespace Titanium.Web.Proxy.Examples.Wpf
{
if (e.WebSession.Response.HasBody)
{
e.WebSession.Response.KeepResponseBody = true;
e.WebSession.Response.KeepBody = true;
await e.GetResponseBody();
}
}
......@@ -220,7 +220,7 @@ namespace Titanium.Web.Proxy.Examples.Wpf
var session = SelectedSession.WebSession;
var request = session.Request;
var data = (request.RequestBodyRead ? request.RequestBody : null) ?? new byte[0];
var data = (request.IsBodyRead ? request.Body : null) ?? new byte[0];
bool truncated = data.Length > truncateLimit;
if (truncated)
{
......@@ -233,7 +233,7 @@ namespace Titanium.Web.Proxy.Examples.Wpf
(request as ConnectRequest)?.ClientHelloInfo;
var response = session.Response;
data = (response.ResponseBodyRead ? response.ResponseBody : null) ?? new byte[0];
data = (response.IsBodyRead ? response.Body : null) ?? new byte[0];
truncated = data.Length > truncateLimit;
if (truncated)
{
......
......@@ -90,7 +90,7 @@ namespace Titanium.Web.Proxy.Examples.Wpf
{
var request = WebSession.Request;
var response = WebSession.Response;
int statusCode = response?.ResponseStatusCode ?? 0;
int statusCode = response?.StatusCode ?? 0;
StatusCode = statusCode == 0 ? "-" : statusCode.ToString();
Protocol = request.RequestUri.Scheme;
......
......@@ -39,7 +39,7 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>6</LangVersion>
<LangVersion>7.1</LangVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
......
......@@ -56,7 +56,7 @@ namespace Titanium.Web.Proxy.EventArguments
get { return reRequest; }
set
{
if (WebSession.Response.ResponseStatusCode == 0)
if (WebSession.Response.StatusCode == 0)
{
throw new Exception("Response status code is empty. Cannot request again a request " + "which was never send to server.");
}
......@@ -149,7 +149,7 @@ namespace Titanium.Web.Proxy.EventArguments
}
//Caching check
if (!WebSession.Request.RequestBodyRead)
if (!WebSession.Request.IsBodyRead)
{
//If chunked then its easy just read the whole body with the content length mentioned in the request header
using (var requestBodyStream = new MemoryStream())
......@@ -173,13 +173,13 @@ namespace Titanium.Web.Proxy.EventArguments
}
}
WebSession.Request.RequestBody = await GetDecompressedResponseBody(WebSession.Request.ContentEncoding, requestBodyStream.ToArray());
WebSession.Request.Body = await GetDecompressedResponseBody(WebSession.Request.ContentEncoding, requestBodyStream.ToArray());
}
//Now set the flag to true
//So that next time we can deliver body from cache
WebSession.Request.RequestBodyRead = true;
var body = WebSession.Request.RequestBody;
WebSession.Request.IsBodyRead = true;
var body = WebSession.Request.Body;
OnDataSent(body, 0, body.Length);
}
}
......@@ -215,7 +215,7 @@ namespace Titanium.Web.Proxy.EventArguments
}
//If not already read (not cached yet)
if (!WebSession.Response.ResponseBodyRead)
if (!WebSession.Response.IsBodyRead)
{
if (WebSession.Response.HasBody)
{
......@@ -240,17 +240,17 @@ namespace Titanium.Web.Proxy.EventArguments
}
}
WebSession.Response.ResponseBody = await GetDecompressedResponseBody(WebSession.Response.ContentEncoding, responseBodyStream.ToArray());
WebSession.Response.Body = await GetDecompressedResponseBody(WebSession.Response.ContentEncoding, responseBodyStream.ToArray());
}
}
else
{
WebSession.Response.ResponseBody = new byte[0];
WebSession.Response.Body = new byte[0];
}
//set this to true for caching
WebSession.Response.ResponseBodyRead = true;
var body = WebSession.Response.ResponseBody;
WebSession.Response.IsBodyRead = true;
var body = WebSession.Response.Body;
OnDataReceived(body, 0, body.Length);
}
}
......@@ -261,12 +261,12 @@ namespace Titanium.Web.Proxy.EventArguments
/// <returns></returns>
public async Task<byte[]> GetRequestBody()
{
if (!WebSession.Request.RequestBodyRead)
if (!WebSession.Request.IsBodyRead)
{
await ReadRequestBody();
}
return WebSession.Request.RequestBody;
return WebSession.Request.Body;
}
/// <summary>
......@@ -275,12 +275,12 @@ namespace Titanium.Web.Proxy.EventArguments
/// <returns></returns>
public async Task<string> GetRequestBodyAsString()
{
if (!WebSession.Request.RequestBodyRead)
if (!WebSession.Request.IsBodyRead)
{
await ReadRequestBody();
}
return WebSession.Request.RequestBodyString;
return WebSession.Request.BodyString;
}
/// <summary>
......@@ -295,12 +295,12 @@ namespace Titanium.Web.Proxy.EventArguments
}
//syphon out the request body from client before setting the new body
if (!WebSession.Request.RequestBodyRead)
if (!WebSession.Request.IsBodyRead)
{
await ReadRequestBody();
}
WebSession.Request.RequestBody = body;
WebSession.Request.Body = body;
WebSession.Request.ContentLength = WebSession.Request.IsChunked ? -1 : body.Length;
}
......@@ -316,7 +316,7 @@ namespace Titanium.Web.Proxy.EventArguments
}
//syphon out the request body from client before setting the new body
if (!WebSession.Request.RequestBodyRead)
if (!WebSession.Request.IsBodyRead)
{
await ReadRequestBody();
}
......@@ -330,12 +330,12 @@ namespace Titanium.Web.Proxy.EventArguments
/// <returns></returns>
public async Task<byte[]> GetResponseBody()
{
if (!WebSession.Response.ResponseBodyRead)
if (!WebSession.Response.IsBodyRead)
{
await ReadResponseBody();
}
return WebSession.Response.ResponseBody;
return WebSession.Response.Body;
}
/// <summary>
......@@ -344,12 +344,12 @@ namespace Titanium.Web.Proxy.EventArguments
/// <returns></returns>
public async Task<string> GetResponseBodyAsString()
{
if (!WebSession.Response.ResponseBodyRead)
if (!WebSession.Response.IsBodyRead)
{
await ReadResponseBody();
}
return WebSession.Response.ResponseBodyString;
return WebSession.Response.BodyString;
}
/// <summary>
......@@ -364,12 +364,12 @@ namespace Titanium.Web.Proxy.EventArguments
}
//syphon out the response body from server before setting the new body
if (WebSession.Response.ResponseBody == null)
if (WebSession.Response.Body == null)
{
await GetResponseBody();
}
WebSession.Response.ResponseBody = body;
WebSession.Response.Body = body;
//If there is a content length header update it
if (WebSession.Response.IsChunked == false)
......@@ -394,7 +394,7 @@ namespace Titanium.Web.Proxy.EventArguments
}
//syphon out the response body from server before setting the new body
if (!WebSession.Response.ResponseBodyRead)
if (!WebSession.Response.IsBodyRead)
{
await GetResponseBody();
}
......@@ -422,9 +422,9 @@ namespace Titanium.Web.Proxy.EventArguments
public async Task Ok(string html, Dictionary<string, HttpHeader> headers)
{
var response = new OkResponse();
response.ResponseHeaders.AddHeaders(headers);
response.Headers.AddHeaders(headers);
response.HttpVersion = WebSession.Request.HttpVersion;
response.ResponseBody = response.Encoding.GetBytes(html ?? string.Empty);
response.Body = response.Encoding.GetBytes(html ?? string.Empty);
await Respond(response);
......@@ -441,9 +441,9 @@ namespace Titanium.Web.Proxy.EventArguments
public async Task Ok(byte[] result, Dictionary<string, HttpHeader> headers = null)
{
var response = new OkResponse();
response.ResponseHeaders.AddHeaders(headers);
response.Headers.AddHeaders(headers);
response.HttpVersion = WebSession.Request.HttpVersion;
response.ResponseBody = result;
response.Body = result;
await Respond(response);
}
......@@ -462,8 +462,8 @@ namespace Titanium.Web.Proxy.EventArguments
{
var response = new GenericResponse(status);
response.HttpVersion = WebSession.Request.HttpVersion;
response.ResponseHeaders.AddHeaders(headers);
response.ResponseBody = response.Encoding.GetBytes(html ?? string.Empty);
response.Headers.AddHeaders(headers);
response.Body = response.Encoding.GetBytes(html ?? string.Empty);
await Respond(response);
}
......@@ -482,8 +482,8 @@ namespace Titanium.Web.Proxy.EventArguments
{
var response = new GenericResponse(status);
response.HttpVersion = WebSession.Request.HttpVersion;
response.ResponseHeaders.AddHeaders(headers);
response.ResponseBody = result;
response.Headers.AddHeaders(headers);
response.Body = result;
await Respond(response);
}
......@@ -497,8 +497,8 @@ namespace Titanium.Web.Proxy.EventArguments
{
var response = new RedirectResponse();
response.HttpVersion = WebSession.Request.HttpVersion;
response.ResponseHeaders.AddHeader("Location", url);
response.ResponseBody = new byte[0];
response.Headers.AddHeader("Location", url);
response.Body = new byte[0];
await Respond(response);
}
......@@ -514,7 +514,7 @@ namespace Titanium.Web.Proxy.EventArguments
WebSession.Request.RequestLocked = true;
response.ResponseLocked = true;
response.ResponseBodyRead = true;
response.IsBodyRead = true;
WebSession.Response = response;
......
......@@ -25,9 +25,9 @@ namespace Titanium.Web.Proxy.Helpers
/// <returns></returns>
public async Task WriteResponseAsync(Response response, bool flush = true)
{
await WriteResponseStatusAsync(response.HttpVersion, response.ResponseStatusCode, response.ResponseStatusDescription);
response.ResponseHeaders.FixProxyHeaders();
await WriteHeadersAsync(response.ResponseHeaders, flush);
await WriteResponseStatusAsync(response.HttpVersion, response.StatusCode, response.StatusDescription);
response.Headers.FixProxyHeaders();
await WriteHeadersAsync(response.Headers, flush);
}
/// <summary>
......
......@@ -18,11 +18,11 @@ namespace Titanium.Web.Proxy.Http
var response = new ConnectResponse
{
HttpVersion = httpVersion,
ResponseStatusCode = (int)HttpStatusCode.OK,
ResponseStatusDescription = "Connection Established"
StatusCode = (int)HttpStatusCode.OK,
StatusDescription = "Connection Established"
};
response.ResponseHeaders.AddHeader("Timestamp", DateTime.Now.ToString());
response.Headers.AddHeader("Timestamp", DateTime.Now.ToString());
return response;
}
}
......
......@@ -94,7 +94,7 @@ namespace Titanium.Web.Proxy.Http
//prepare the request & headers
if (useUpstreamProxy)
{
writer.WriteLine($"{Request.Method} {Request.OriginalRequestUrl} HTTP/{Request.HttpVersion.Major}.{Request.HttpVersion.Minor}");
writer.WriteLine($"{Request.Method} {Request.OriginalUrl} HTTP/{Request.HttpVersion.Major}.{Request.HttpVersion.Minor}");
}
else
{
......@@ -113,7 +113,7 @@ namespace Titanium.Web.Proxy.Http
}
//write request headers
foreach (var header in Request.RequestHeaders)
foreach (var header in Request.Headers)
{
if (header.Name != "Proxy-Authorization")
{
......@@ -165,7 +165,7 @@ namespace Titanium.Web.Proxy.Http
internal async Task ReceiveResponse()
{
//return if this is already read
if (Response.ResponseStatusCode != 0)
if (Response.StatusCode != 0)
return;
string httpStatus = await ServerConnection.StreamReader.ReadLineAsync();
......@@ -186,28 +186,28 @@ namespace Titanium.Web.Proxy.Http
Response.ParseResponseLine(httpStatus, out version, out statusCode, out statusDescription);
Response.HttpVersion = version;
Response.ResponseStatusCode = statusCode;
Response.ResponseStatusDescription = statusDescription;
Response.StatusCode = statusCode;
Response.StatusDescription = statusDescription;
//For HTTP 1.1 comptibility server may send expect-continue even if not asked for it in request
if (Response.ResponseStatusCode == (int)HttpStatusCode.Continue
&& Response.ResponseStatusDescription.Equals("continue", StringComparison.CurrentCultureIgnoreCase))
if (Response.StatusCode == (int)HttpStatusCode.Continue
&& Response.StatusDescription.Equals("continue", StringComparison.CurrentCultureIgnoreCase))
{
//Read the next line after 100-continue
Response.Is100Continue = true;
Response.ResponseStatusCode = 0;
Response.StatusCode = 0;
await ServerConnection.StreamReader.ReadLineAsync();
//now receive response
await ReceiveResponse();
return;
}
if (Response.ResponseStatusCode == (int)HttpStatusCode.ExpectationFailed
&& Response.ResponseStatusDescription.Equals("expectation failed", StringComparison.CurrentCultureIgnoreCase))
if (Response.StatusCode == (int)HttpStatusCode.ExpectationFailed
&& Response.StatusDescription.Equals("expectation failed", StringComparison.CurrentCultureIgnoreCase))
{
//read next line after expectation failed response
Response.ExpectationFailed = true;
Response.ResponseStatusCode = 0;
Response.StatusCode = 0;
await ServerConnection.StreamReader.ReadLineAsync();
//now receive response
await ReceiveResponse();
......@@ -215,7 +215,7 @@ namespace Titanium.Web.Proxy.Http
}
//Read the response headers in to unique and non-unique header collections
await HeaderParser.ReadHeaders(ServerConnection.StreamReader, Response.ResponseHeaders);
await HeaderParser.ReadHeaders(ServerConnection.StreamReader, Response.Headers);
}
/// <summary>
......
......@@ -14,12 +14,12 @@ namespace Titanium.Web.Proxy.Http
/// <summary>
/// Cached request body as byte array
/// </summary>
private byte[] requestBody;
private byte[] body;
/// <summary>
/// Cached request body as string
/// </summary>
private string requestBodyString;
private string bodyString;
/// <summary>
/// Request Method
......@@ -39,7 +39,7 @@ namespace Titanium.Web.Proxy.Http
/// <summary>
/// The original request Url.
/// </summary>
public string OriginalRequestUrl { get; set; }
public string OriginalUrl { get; set; }
/// <summary>
/// Request Http Version
......@@ -49,7 +49,7 @@ namespace Titanium.Web.Proxy.Http
/// <summary>
/// Keeps the request body data after the session is finished
/// </summary>
public bool KeepRequestBody { get; set; }
public bool KeepBody { get; set; }
/// <summary>
/// Has request body?
......@@ -65,18 +65,18 @@ namespace Titanium.Web.Proxy.Http
{
get
{
return RequestHeaders.GetHeaderValueOrNull("host");
return Headers.GetHeaderValueOrNull("host");
}
set
{
RequestHeaders.SetOrAddHeaderValue("host", value);
Headers.SetOrAddHeaderValue("host", value);
}
}
/// <summary>
/// Content encoding header value
/// </summary>
public string ContentEncoding => RequestHeaders.GetHeaderValueOrNull("content-encoding");
public string ContentEncoding => Headers.GetHeaderValueOrNull("content-encoding");
/// <summary>
/// Request content-length
......@@ -85,7 +85,7 @@ namespace Titanium.Web.Proxy.Http
{
get
{
string headerValue = RequestHeaders.GetHeaderValueOrNull("content-length");
string headerValue = Headers.GetHeaderValueOrNull("content-length");
if (headerValue == null)
{
......@@ -105,12 +105,12 @@ namespace Titanium.Web.Proxy.Http
{
if (value >= 0)
{
RequestHeaders.SetOrAddHeaderValue("content-length", value.ToString());
Headers.SetOrAddHeaderValue("content-length", value.ToString());
IsChunked = false;
}
else
{
RequestHeaders.RemoveHeader("content-length");
Headers.RemoveHeader("content-length");
}
}
}
......@@ -122,11 +122,11 @@ namespace Titanium.Web.Proxy.Http
{
get
{
return RequestHeaders.GetHeaderValueOrNull("content-type");
return Headers.GetHeaderValueOrNull("content-type");
}
set
{
RequestHeaders.SetOrAddHeaderValue("content-type", value);
Headers.SetOrAddHeaderValue("content-type", value);
}
}
......@@ -137,19 +137,19 @@ namespace Titanium.Web.Proxy.Http
{
get
{
string headerValue = RequestHeaders.GetHeaderValueOrNull("transfer-encoding");
string headerValue = Headers.GetHeaderValueOrNull("transfer-encoding");
return headerValue != null && headerValue.ContainsIgnoreCase("chunked");
}
set
{
if (value)
{
RequestHeaders.SetOrAddHeaderValue("transfer-encoding", "chunked");
Headers.SetOrAddHeaderValue("transfer-encoding", "chunked");
ContentLength = -1;
}
else
{
RequestHeaders.RemoveHeader("transfer-encoding");
Headers.RemoveHeader("transfer-encoding");
}
}
}
......@@ -161,7 +161,7 @@ namespace Titanium.Web.Proxy.Http
{
get
{
string headerValue = RequestHeaders.GetHeaderValueOrNull("expect");
string headerValue = Headers.GetHeaderValueOrNull("expect");
return headerValue != null && headerValue.Equals("100-continue");
}
}
......@@ -184,11 +184,11 @@ namespace Titanium.Web.Proxy.Http
/// <summary>
/// Request body as byte array
/// </summary>
public byte[] RequestBody
public byte[] Body
{
get
{
if (!RequestBodyRead)
if (!IsBodyRead)
{
if (RequestLocked)
{
......@@ -200,12 +200,12 @@ namespace Titanium.Web.Proxy.Http
"method to read the request body.");
}
return requestBody;
return body;
}
internal set
{
requestBody = value;
requestBodyString = null;
body = value;
bodyString = null;
}
}
......@@ -213,12 +213,12 @@ namespace Titanium.Web.Proxy.Http
/// Request body as string
/// Use the encoding specified in request to decode the byte[] data to string
/// </summary>
public string RequestBodyString => requestBodyString ?? (requestBodyString = Encoding.GetString(RequestBody));
public string BodyString => bodyString ?? (bodyString = Encoding.GetString(Body));
/// <summary>
/// Request body was read by user?
/// </summary>
public bool RequestBodyRead { get; internal set; }
public bool IsBodyRead { get; internal set; }
/// <summary>
/// Request is ready to be sent (user callbacks are complete?)
......@@ -232,7 +232,7 @@ namespace Titanium.Web.Proxy.Http
{
get
{
string headerValue = RequestHeaders.GetHeaderValueOrNull("upgrade");
string headerValue = Headers.GetHeaderValueOrNull("upgrade");
if (headerValue == null)
{
......@@ -246,7 +246,7 @@ namespace Titanium.Web.Proxy.Http
/// <summary>
/// Request header collection
/// </summary>
public HeaderCollection RequestHeaders { get; } = new HeaderCollection();
public HeaderCollection Headers { get; } = new HeaderCollection();
/// <summary>
/// Does server responsed positively for 100 continue request
......@@ -266,8 +266,8 @@ namespace Titanium.Web.Proxy.Http
get
{
var sb = new StringBuilder();
sb.AppendLine($"{Method} {OriginalRequestUrl} HTTP/{HttpVersion.Major}.{HttpVersion.Minor}");
foreach (var header in RequestHeaders)
sb.AppendLine($"{Method} {OriginalUrl} HTTP/{HttpVersion.Major}.{HttpVersion.Minor}");
foreach (var header in Headers)
{
sb.AppendLine(header.ToString());
}
......@@ -333,10 +333,10 @@ namespace Titanium.Web.Proxy.Http
/// </summary>
public void FinishSession()
{
if (!KeepRequestBody)
if (!KeepBody)
{
requestBody = null;
requestBodyString = null;
body = null;
bodyString = null;
}
}
......
......@@ -14,22 +14,22 @@ namespace Titanium.Web.Proxy.Http
/// <summary>
/// Cached response body content as byte array
/// </summary>
private byte[] responseBody;
private byte[] body;
/// <summary>
/// Cached response body as string
/// </summary>
private string responseBodyString;
private string bodyString;
/// <summary>
/// Response Status Code.
/// </summary>
public int ResponseStatusCode { get; set; }
public int StatusCode { get; set; }
/// <summary>
/// Response Status description.
/// </summary>
public string ResponseStatusDescription { get; set; }
public string StatusDescription { get; set; }
/// <summary>
/// Encoding used in response
......@@ -39,7 +39,7 @@ namespace Titanium.Web.Proxy.Http
/// <summary>
/// Content encoding for this response
/// </summary>
public string ContentEncoding => ResponseHeaders.GetHeaderValueOrNull("content-encoding")?.Trim();
public string ContentEncoding => Headers.GetHeaderValueOrNull("content-encoding")?.Trim();
/// <summary>
/// Http version
......@@ -49,7 +49,7 @@ namespace Titanium.Web.Proxy.Http
/// <summary>
/// Keeps the response body data after the session is finished
/// </summary>
public bool KeepResponseBody { get; set; }
public bool KeepBody { get; set; }
/// <summary>
/// Has response body?
......@@ -60,14 +60,14 @@ namespace Titanium.Web.Proxy.Http
{
//Has body only if response is chunked or content length >0
//If none are true then check if connection:close header exist, if so write response until server or client terminates the connection
if (IsChunked || ContentLength > 0 || !ResponseKeepAlive)
if (IsChunked || ContentLength > 0 || !KeepAlive)
{
return true;
}
//has response if connection:keep-alive header exist and when version is http/1.0
//Because in Http 1.0 server can return a response without content-length (expectation being client would read until end of stream)
if (ResponseKeepAlive && HttpVersion.Minor == 0)
if (KeepAlive && HttpVersion.Minor == 0)
{
return true;
}
......@@ -79,11 +79,11 @@ namespace Titanium.Web.Proxy.Http
/// <summary>
/// Keep the connection alive?
/// </summary>
public bool ResponseKeepAlive
public bool KeepAlive
{
get
{
string headerValue = ResponseHeaders.GetHeaderValueOrNull("connection");
string headerValue = Headers.GetHeaderValueOrNull("connection");
if (headerValue != null)
{
......@@ -100,7 +100,7 @@ namespace Titanium.Web.Proxy.Http
/// <summary>
/// Content type of this response
/// </summary>
public string ContentType => ResponseHeaders.GetHeaderValueOrNull("content-type");
public string ContentType => Headers.GetHeaderValueOrNull("content-type");
/// <summary>
/// Length of response body
......@@ -109,7 +109,7 @@ namespace Titanium.Web.Proxy.Http
{
get
{
string headerValue = ResponseHeaders.GetHeaderValueOrNull("content-length");
string headerValue = Headers.GetHeaderValueOrNull("content-length");
if (headerValue == null)
{
......@@ -129,12 +129,12 @@ namespace Titanium.Web.Proxy.Http
{
if (value >= 0)
{
ResponseHeaders.SetOrAddHeaderValue("content-length", value.ToString());
Headers.SetOrAddHeaderValue("content-length", value.ToString());
IsChunked = false;
}
else
{
ResponseHeaders.RemoveHeader("content-length");
Headers.RemoveHeader("content-length");
}
}
}
......@@ -146,19 +146,19 @@ namespace Titanium.Web.Proxy.Http
{
get
{
string headerValue = ResponseHeaders.GetHeaderValueOrNull("transfer-encoding");
string headerValue = Headers.GetHeaderValueOrNull("transfer-encoding");
return headerValue != null && headerValue.ContainsIgnoreCase("chunked");
}
set
{
if (value)
{
ResponseHeaders.SetOrAddHeaderValue("transfer-encoding", "chunked");
Headers.SetOrAddHeaderValue("transfer-encoding", "chunked");
ContentLength = -1;
}
else
{
ResponseHeaders.RemoveHeader("transfer-encoding");
Headers.RemoveHeader("transfer-encoding");
}
}
}
......@@ -166,28 +166,28 @@ namespace Titanium.Web.Proxy.Http
/// <summary>
/// Collection of all response headers
/// </summary>
public HeaderCollection ResponseHeaders { get; } = new HeaderCollection();
public HeaderCollection Headers { get; } = new HeaderCollection();
/// <summary>
/// Response body as byte array
/// </summary>
public byte[] ResponseBody
public byte[] Body
{
get
{
if (!ResponseBodyRead)
if (!IsBodyRead)
{
throw new Exception("Response body is not read yet. " +
"Use SessionEventArgs.GetResponseBody() or SessionEventArgs.GetResponseBodyAsString() " +
"method to read the response body.");
}
return responseBody;
return body;
}
internal set
{
responseBody = value;
responseBodyString = null;
body = value;
bodyString = null;
}
}
......@@ -195,12 +195,12 @@ namespace Titanium.Web.Proxy.Http
/// Response body as string
/// Use the encoding specified in response to decode the byte[] data to string
/// </summary>
public string ResponseBodyString => responseBodyString ?? (responseBodyString = Encoding.GetString(ResponseBody));
public string BodyString => bodyString ?? (bodyString = Encoding.GetString(Body));
/// <summary>
/// Was response body read by user
/// </summary>
public bool ResponseBodyRead { get; internal set; }
public bool IsBodyRead { get; internal set; }
/// <summary>
/// Is response is no more modifyable by user (user callbacks complete?)
......@@ -220,7 +220,7 @@ namespace Titanium.Web.Proxy.Http
/// <summary>
/// Gets the resposne status.
/// </summary>
public string ResponseStatus => $"HTTP/{HttpVersion?.Major}.{HttpVersion?.Minor} {ResponseStatusCode} {ResponseStatusDescription}";
public string Status => $"HTTP/{HttpVersion?.Major}.{HttpVersion?.Minor} {StatusCode} {StatusDescription}";
/// <summary>
/// Gets the header text.
......@@ -230,8 +230,8 @@ namespace Titanium.Web.Proxy.Http
get
{
var sb = new StringBuilder();
sb.AppendLine(ResponseStatus);
foreach (var header in ResponseHeaders)
sb.AppendLine(Status);
foreach (var header in Headers)
{
sb.AppendLine(header.ToString());
}
......@@ -266,10 +266,10 @@ namespace Titanium.Web.Proxy.Http
/// </summary>
internal void FinishSession()
{
if (!KeepResponseBody)
if (!KeepBody)
{
responseBody = null;
responseBodyString = null;
body = null;
bodyString = null;
}
}
......
......@@ -13,11 +13,11 @@ namespace Titanium.Web.Proxy.Http.Responses
/// <param name="status"></param>
public GenericResponse(HttpStatusCode status)
{
ResponseStatusCode = (int)status;
StatusCode = (int)status;
//todo: this is not really correct, status description should contain spaces, too
//see: https://tools.ietf.org/html/rfc7231#section-6.1
ResponseStatusDescription = status.ToString();
StatusDescription = status.ToString();
}
/// <summary>
......@@ -27,8 +27,8 @@ namespace Titanium.Web.Proxy.Http.Responses
/// <param name="statusDescription"></param>
public GenericResponse(int statusCode, string statusDescription)
{
ResponseStatusCode = statusCode;
ResponseStatusDescription = statusDescription;
StatusCode = statusCode;
StatusDescription = statusDescription;
}
}
}
......@@ -12,8 +12,8 @@ namespace Titanium.Web.Proxy.Http.Responses
/// </summary>
public OkResponse()
{
ResponseStatusCode = (int)HttpStatusCode.OK;
ResponseStatusDescription = "OK";
StatusCode = (int)HttpStatusCode.OK;
StatusDescription = "OK";
}
}
}
......@@ -12,8 +12,8 @@ namespace Titanium.Web.Proxy.Http.Responses
/// </summary>
public RedirectResponse()
{
ResponseStatusCode = (int)HttpStatusCode.Found;
ResponseStatusDescription = "Found";
StatusCode = (int)HttpStatusCode.Found;
StatusDescription = "Found";
}
}
}
......@@ -20,7 +20,7 @@ namespace Titanium.Web.Proxy
return true;
}
var httpHeaders = session.WebSession.Request.RequestHeaders.ToArray();
var httpHeaders = session.WebSession.Request.Headers.ToArray();
try
{
......@@ -68,12 +68,12 @@ namespace Titanium.Web.Proxy
var response = new Response
{
HttpVersion = HttpHeader.Version11,
ResponseStatusCode = (int)HttpStatusCode.ProxyAuthenticationRequired,
ResponseStatusDescription = description
StatusCode = (int)HttpStatusCode.ProxyAuthenticationRequired,
StatusDescription = description
};
response.ResponseHeaders.AddHeader("Proxy-Authenticate", $"Basic realm=\"{ProxyRealm}\"");
response.ResponseHeaders.AddHeader("Proxy-Connection", "close");
response.Headers.AddHeader("Proxy-Authenticate", $"Basic realm=\"{ProxyRealm}\"");
response.Headers.AddHeader("Proxy-Connection", "close");
await clientStreamWriter.WriteResponseAsync(response);
return response;
......
......@@ -81,11 +81,11 @@ namespace Titanium.Web.Proxy
connectRequest = new ConnectRequest
{
RequestUri = httpRemoteUri,
OriginalRequestUrl = httpUrl,
OriginalUrl = httpUrl,
HttpVersion = version,
};
await HeaderParser.ReadHeaders(clientStreamReader, connectRequest.RequestHeaders);
await HeaderParser.ReadHeaders(clientStreamReader, connectRequest.Headers);
var connectArgs = new TunnelConnectSessionEventArgs(BufferSize, endPoint, connectRequest);
connectArgs.ProxyClient.TcpClient = tcpClient;
......@@ -312,14 +312,14 @@ namespace Titanium.Web.Proxy
Request.ParseRequestLine(httpCmd, out httpMethod, out httpUrl, out version);
//Read the request headers in to unique and non-unique header collections
await HeaderParser.ReadHeaders(clientStreamReader, args.WebSession.Request.RequestHeaders);
await HeaderParser.ReadHeaders(clientStreamReader, args.WebSession.Request.Headers);
var httpRemoteUri = new Uri(httpsConnectHostname == null
? isTransparentEndPoint ? string.Concat("http://", args.WebSession.Request.Host, httpUrl) : httpUrl
: string.Concat("https://", args.WebSession.Request.Host ?? httpsConnectHostname, httpUrl));
args.WebSession.Request.RequestUri = httpRemoteUri;
args.WebSession.Request.OriginalRequestUrl = httpUrl;
args.WebSession.Request.OriginalUrl = httpUrl;
args.WebSession.Request.Method = httpMethod;
args.WebSession.Request.HttpVersion = version;
......@@ -334,7 +334,7 @@ namespace Titanium.Web.Proxy
break;
}
PrepareRequestHeaders(args.WebSession.Request.RequestHeaders);
PrepareRequestHeaders(args.WebSession.Request.Headers);
args.WebSession.Request.Host = args.WebSession.Request.RequestUri.Authority;
//if win auth is enabled
......@@ -377,7 +377,7 @@ namespace Titanium.Web.Proxy
if (args.WebSession.Request.UpgradeToWebSocket)
{
//prepare the prefix content
var requestHeaders = args.WebSession.Request.RequestHeaders;
var requestHeaders = args.WebSession.Request.Headers;
byte[] requestBytes;
using (var ms = new MemoryStream())
using (var writer = new HttpRequestWriter(ms, BufferSize))
......@@ -395,10 +395,10 @@ namespace Titanium.Web.Proxy
string responseStatusDescription;
Response.ParseResponseLine(httpStatus, out responseVersion, out responseStatusCode, out responseStatusDescription);
args.WebSession.Response.HttpVersion = responseVersion;
args.WebSession.Response.ResponseStatusCode = responseStatusCode;
args.WebSession.Response.ResponseStatusDescription = responseStatusDescription;
args.WebSession.Response.StatusCode = responseStatusCode;
args.WebSession.Response.StatusDescription = responseStatusDescription;
await HeaderParser.ReadHeaders(connection.StreamReader, args.WebSession.Response.ResponseHeaders);
await HeaderParser.ReadHeaders(connection.StreamReader, args.WebSession.Response.Headers);
await clientStreamWriter.WriteResponseAsync(args.WebSession.Response);
......@@ -426,7 +426,7 @@ namespace Titanium.Web.Proxy
}
//if connection is closing exit
if (args.WebSession.Response.ResponseKeepAlive == false)
if (args.WebSession.Response.KeepAlive == false)
{
args.Dispose();
break;
......@@ -502,15 +502,15 @@ namespace Titanium.Web.Proxy
if (args.WebSession.Request.ContentLength > 0)
{
//If request was modified by user
if (args.WebSession.Request.RequestBodyRead)
if (args.WebSession.Request.IsBodyRead)
{
if (args.WebSession.Request.ContentEncoding != null)
{
args.WebSession.Request.RequestBody =
await GetCompressedResponseBody(args.WebSession.Request.ContentEncoding, args.WebSession.Request.RequestBody);
args.WebSession.Request.Body =
await GetCompressedResponseBody(args.WebSession.Request.ContentEncoding, args.WebSession.Request.Body);
}
var body = args.WebSession.Request.RequestBody;
var body = args.WebSession.Request.Body;
//chunked send is not supported as of now
args.WebSession.Request.ContentLength = body.Length;
......@@ -544,7 +544,7 @@ namespace Titanium.Web.Proxy
}
//if connection is closing exit
if (args.WebSession.Response.ResponseKeepAlive == false)
if (args.WebSession.Response.KeepAlive == false)
{
return true;
}
......
......@@ -29,7 +29,7 @@ namespace Titanium.Web.Proxy
var response = args.WebSession.Response;
//check for windows authentication
if (IsWindowsAuthenticationEnabledAndSupported && response.ResponseStatusCode == (int)HttpStatusCode.Unauthorized)
if (IsWindowsAuthenticationEnabledAndSupported && response.StatusCode == (int)HttpStatusCode.Unauthorized)
{
bool disposed = await Handle401UnAuthorized(args);
......@@ -74,21 +74,21 @@ namespace Titanium.Web.Proxy
}
//Write back response status to client
await clientStreamWriter.WriteResponseStatusAsync(response.HttpVersion, response.ResponseStatusCode, response.ResponseStatusDescription);
await clientStreamWriter.WriteResponseStatusAsync(response.HttpVersion, response.StatusCode, response.StatusDescription);
response.ResponseHeaders.FixProxyHeaders();
if (response.ResponseBodyRead)
response.Headers.FixProxyHeaders();
if (response.IsBodyRead)
{
bool isChunked = response.IsChunked;
string contentEncoding = response.ContentEncoding;
if (contentEncoding != null)
{
response.ResponseBody = await GetCompressedResponseBody(contentEncoding, response.ResponseBody);
response.Body = await GetCompressedResponseBody(contentEncoding, response.Body);
if (isChunked == false)
{
response.ContentLength = response.ResponseBody.Length;
response.ContentLength = response.Body.Length;
}
else
{
......@@ -96,12 +96,12 @@ namespace Titanium.Web.Proxy
}
}
await clientStreamWriter.WriteHeadersAsync(response.ResponseHeaders);
await clientStreamWriter.WriteResponseBodyAsync(response.ResponseBody, isChunked);
await clientStreamWriter.WriteHeadersAsync(response.Headers);
await clientStreamWriter.WriteResponseBodyAsync(response.Body, isChunked);
}
else
{
await clientStreamWriter.WriteHeadersAsync(response.ResponseHeaders);
await clientStreamWriter.WriteHeadersAsync(response.Headers);
//Write body if exists
if (response.HasBody)
......
......@@ -8,7 +8,7 @@
<AssemblyOriginatorKeyFile>StrongNameKey.snk</AssemblyOriginatorKeyFile>
<DelaySign>False</DelaySign>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
<LangVersion>6</LangVersion>
<LangVersion>7.1</LangVersion>
</PropertyGroup>
<ItemGroup>
......
......@@ -44,7 +44,7 @@ namespace Titanium.Web.Proxy
//check in non-unique headers first
var header =
args.WebSession.Response.ResponseHeaders.NonUniqueHeaders.FirstOrDefault(
args.WebSession.Response.Headers.NonUniqueHeaders.FirstOrDefault(
x => authHeaderNames.Any(y => x.Key.Equals(y, StringComparison.OrdinalIgnoreCase)));
if (!header.Equals(new KeyValuePair<string, List<HttpHeader>>()))
......@@ -54,7 +54,7 @@ namespace Titanium.Web.Proxy
if (headerName != null)
{
authHeader = args.WebSession.Response.ResponseHeaders.NonUniqueHeaders[headerName]
authHeader = args.WebSession.Response.Headers.NonUniqueHeaders[headerName]
.FirstOrDefault(x => authSchemes.Any(y => x.Value.StartsWith(y, StringComparison.OrdinalIgnoreCase)));
}
......@@ -63,7 +63,7 @@ namespace Titanium.Web.Proxy
{
//check in non-unique headers first
var uHeader =
args.WebSession.Response.ResponseHeaders.Headers.FirstOrDefault(x => authHeaderNames.Any(y => x.Key.Equals(y, StringComparison.OrdinalIgnoreCase)));
args.WebSession.Response.Headers.Headers.FirstOrDefault(x => authHeaderNames.Any(y => x.Key.Equals(y, StringComparison.OrdinalIgnoreCase)));
if (!uHeader.Equals(new KeyValuePair<string, HttpHeader>()))
{
......@@ -72,9 +72,9 @@ namespace Titanium.Web.Proxy
if (headerName != null)
{
authHeader = authSchemes.Any(x => args.WebSession.Response.ResponseHeaders.Headers[headerName].Value
authHeader = authSchemes.Any(x => args.WebSession.Response.Headers.Headers[headerName].Value
.StartsWith(x, StringComparison.OrdinalIgnoreCase))
? args.WebSession.Response.ResponseHeaders.Headers[headerName]
? args.WebSession.Response.Headers.Headers[headerName]
: null;
}
}
......@@ -84,9 +84,9 @@ namespace Titanium.Web.Proxy
string scheme = authSchemes.FirstOrDefault(x => authHeader.Value.Equals(x, StringComparison.OrdinalIgnoreCase));
//clear any existing headers to avoid confusing bad servers
if (args.WebSession.Request.RequestHeaders.NonUniqueHeaders.ContainsKey("Authorization"))
if (args.WebSession.Request.Headers.NonUniqueHeaders.ContainsKey("Authorization"))
{
args.WebSession.Request.RequestHeaders.NonUniqueHeaders.Remove("Authorization");
args.WebSession.Request.Headers.NonUniqueHeaders.Remove("Authorization");
}
//initial value will match exactly any of the schemes
......@@ -97,13 +97,13 @@ namespace Titanium.Web.Proxy
var auth = new HttpHeader("Authorization", string.Concat(scheme, clientToken));
//replace existing authorization header if any
if (args.WebSession.Request.RequestHeaders.Headers.ContainsKey("Authorization"))
if (args.WebSession.Request.Headers.Headers.ContainsKey("Authorization"))
{
args.WebSession.Request.RequestHeaders.Headers["Authorization"] = auth;
args.WebSession.Request.Headers.Headers["Authorization"] = auth;
}
else
{
args.WebSession.Request.RequestHeaders.Headers.Add("Authorization", auth);
args.WebSession.Request.Headers.Headers.Add("Authorization", auth);
}
//don't need to send body for Authorization request
......@@ -122,12 +122,12 @@ namespace Titanium.Web.Proxy
string clientToken = WinAuthHandler.GetFinalAuthToken(args.WebSession.Request.Host, serverToken, args.Id);
//there will be an existing header from initial client request
args.WebSession.Request.RequestHeaders.Headers["Authorization"] = new HttpHeader("Authorization", string.Concat(scheme, clientToken));
args.WebSession.Request.Headers.Headers["Authorization"] = new HttpHeader("Authorization", string.Concat(scheme, clientToken));
//send body for final auth request
if (args.WebSession.Request.HasBody)
{
args.WebSession.Request.ContentLength = args.WebSession.Request.RequestBody.Length;
args.WebSession.Request.ContentLength = args.WebSession.Request.Body.Length;
}
}
......
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