| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 | 
							- using System;
 
- using System.Linq;
 
- using System.Net;
 
- using System.Text;
 
- using MediaBrowser.Model.Services;
 
- using SocketHttpListener.Net;
 
- using HttpStatusCode = SocketHttpListener.Net.HttpStatusCode;
 
- using HttpVersion = SocketHttpListener.Net.HttpVersion;
 
- namespace SocketHttpListener
 
- {
 
-     internal class HttpResponse : HttpBase
 
-     {
 
-         #region Private Fields
 
-         private string _code;
 
-         private string _reason;
 
-         #endregion
 
-         #region Private Constructors
 
-         private HttpResponse(string code, string reason, Version version, QueryParamCollection headers)
 
-             : base(version, headers)
 
-         {
 
-             _code = code;
 
-             _reason = reason;
 
-         }
 
-         #endregion
 
-         #region Internal Constructors
 
-         internal HttpResponse(HttpStatusCode code)
 
-             : this(code, code.GetDescription())
 
-         {
 
-         }
 
-         internal HttpResponse(HttpStatusCode code, string reason)
 
-             : this(((int)code).ToString(), reason, HttpVersion.Version11, new QueryParamCollection())
 
-         {
 
-             Headers["Server"] = "websocket-sharp/1.0";
 
-         }
 
-         #endregion
 
-         #region Public Properties
 
-         public CookieCollection Cookies => GetCookies(Headers, true);
 
-         private static CookieCollection GetCookies(QueryParamCollection headers, bool response)
 
-         {
 
-             var name = response ? "Set-Cookie" : "Cookie";
 
-             return headers == null || !headers.Contains(name)
 
-                    ? new CookieCollection()
 
-                    : CookieHelper.Parse(headers[name], response);
 
-         }
 
-         public bool IsProxyAuthenticationRequired => _code == "407";
 
-         public bool IsUnauthorized => _code == "401";
 
-         public bool IsWebSocketResponse
 
-         {
 
-             get
 
-             {
 
-                 var headers = Headers;
 
-                 return ProtocolVersion > HttpVersion.Version10 &&
 
-                        _code == "101" &&
 
-                        headers.Contains("Upgrade", "websocket") &&
 
-                        headers.Contains("Connection", "Upgrade");
 
-             }
 
-         }
 
-         public string Reason => _reason;
 
-         public string StatusCode => _code;
 
-         #endregion
 
-         #region Internal Methods
 
-         internal static HttpResponse CreateCloseResponse(HttpStatusCode code)
 
-         {
 
-             var res = new HttpResponse(code);
 
-             res.Headers["Connection"] = "close";
 
-             return res;
 
-         }
 
-         #endregion
 
-         #region Public Methods
 
-         public void SetCookies(CookieCollection cookies)
 
-         {
 
-             if (cookies == null || cookies.Count == 0)
 
-                 return;
 
-             var headers = Headers;
 
-             var sorted = cookies.OfType<Cookie>().OrderBy(i => i.Name).ToList();
 
-             foreach (var cookie in sorted)
 
-                 headers.Add("Set-Cookie", cookie.ToString());
 
-         }
 
-         public override string ToString()
 
-         {
 
-             var output = new StringBuilder(64);
 
-             output.AppendFormat("HTTP/{0} {1} {2}{3}", ProtocolVersion, _code, _reason, CrLf);
 
-             var headers = Headers;
 
-             foreach (var key in headers.Keys)
 
-                 output.AppendFormat("{0}: {1}{2}", key, headers[key], CrLf);
 
-             output.Append(CrLf);
 
-             var entity = EntityBody;
 
-             if (entity.Length > 0)
 
-                 output.Append(entity);
 
-             return output.ToString();
 
-         }
 
-         #endregion
 
-     }
 
- }
 
 
  |