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.
78 lines
2.1 KiB
78 lines
2.1 KiB
using System; |
|
using System.IO; |
|
|
|
namespace BestHTTP.Connections |
|
{ |
|
public enum SupportedProtocols |
|
{ |
|
Unknown, |
|
HTTP, |
|
|
|
#if !BESTHTTP_DISABLE_WEBSOCKET |
|
WebSocket, |
|
#endif |
|
|
|
#if !BESTHTTP_DISABLE_SERVERSENT_EVENTS |
|
ServerSentEvents |
|
#endif |
|
} |
|
|
|
public static class HTTPProtocolFactory |
|
{ |
|
public const string W3C_HTTP1 = "http/1.1"; |
|
#if (!UNITY_WEBGL || UNITY_EDITOR) && !BESTHTTP_DISABLE_ALTERNATE_SSL && !BESTHTTP_DISABLE_HTTP2 |
|
public const string W3C_HTTP2 = "h2"; |
|
#endif |
|
|
|
public static HTTPResponse Get(SupportedProtocols protocol, HTTPRequest request, Stream stream, bool isStreamed, bool isFromCache) |
|
{ |
|
switch (protocol) |
|
{ |
|
#if !BESTHTTP_DISABLE_WEBSOCKET && (!UNITY_WEBGL || UNITY_EDITOR) |
|
case SupportedProtocols.WebSocket: return new WebSocket.WebSocketResponse(request, stream, isStreamed, isFromCache); |
|
#endif |
|
default: return new HTTPResponse(request, stream, isStreamed, isFromCache); |
|
} |
|
} |
|
|
|
public static SupportedProtocols GetProtocolFromUri(Uri uri) |
|
{ |
|
if (uri == null || uri.Scheme == null) |
|
throw new Exception("Malformed URI in GetProtocolFromUri"); |
|
|
|
string scheme = uri.Scheme.ToLowerInvariant(); |
|
switch (scheme) |
|
{ |
|
#if !BESTHTTP_DISABLE_WEBSOCKET |
|
case "ws": |
|
case "wss": |
|
return SupportedProtocols.WebSocket; |
|
#endif |
|
|
|
default: |
|
return SupportedProtocols.HTTP; |
|
} |
|
} |
|
|
|
public static bool IsSecureProtocol(Uri uri) |
|
{ |
|
if (uri == null || uri.Scheme == null) |
|
throw new Exception("Malformed URI in IsSecureProtocol"); |
|
|
|
string scheme = uri.Scheme.ToLowerInvariant(); |
|
switch (scheme) |
|
{ |
|
// http |
|
case "https": |
|
|
|
#if !BESTHTTP_DISABLE_WEBSOCKET |
|
// WebSocket |
|
case "wss": |
|
#endif |
|
return true; |
|
} |
|
|
|
return false; |
|
} |
|
} |
|
}
|
|
|