123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- 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;
- }
- }
- }
|