You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
using Apewer.Network; using System; using System.Collections.Generic; using System.Collections.Specialized; using System.Globalization; using System.IO; using System.Net; using System.Security.Cryptography.X509Certificates; using System.Text;
namespace Apewer.Web {
/// <summary>请求。</summary>
public sealed class MiniRequest : IToJson {
/// <summary>上下文。</summary>
public MiniContext Context { get; private set; }
#region connection
internal bool Http11 = false;
/// <summary>要求保持连接。</summary>
public bool KeepAlive { get; internal set; }
#endregion
#region headers
HttpHeaders _headers = new HttpHeaders();
/// <summary>头部。</summary>
public HttpHeaders Headers { get => _headers; }
/// <summary>统一资源定位。</summary>
public Uri Url { get; internal set; }
/// <summary>请求方法。</summary>
public string Method { get; internal set; }
/// <summary>URL 路径。</summary>
public string Path { get; internal set; }
/// <summary>HTTP 协议版本。</summary>
public string Version { get; internal set; }
/// <summary>客户端可接受 Brotli 压缩。</summary>
public bool Brotli { get; internal set; }
/// <summary>客户端可接受 Gzip 压缩。</summary>
public bool Gzip { get; internal set; }
/// <summary>内容长度,单位:字节。</summary>
public long ContentLength { get => _headers.GetValue("Content-Length").Int64(); }
#endregion
#region
/// <summary>请求体的流。</summary>
public Stream Body { get => Context.Connection.GetRequestStream(); }
#endregion
/// <summary></summary>
internal MiniRequest(MiniContext context) { Context = context; }
/// <summary>专用的序列化方法。</summary>
public Json ToJson() { var json = new Json(); json.SetProperty("Method", Method); json.SetProperty("Path", Path); json.SetProperty("Url", Url?.OriginalString); json.SetProperty("Headers", Json.From(Headers)); return json; }
}
}
|