1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Text;
- namespace BestHTTP
- {
- public enum SupportedProtocols
- {
- Unknown,
- HTTP,
- #if !BESTHTTP_DISABLE_WEBSOCKET
- WebSocket,
- #endif
- #if !BESTHTTP_DISABLE_SERVERSENT_EVENTS
- ServerSentEvents
- #endif
- }
- internal static class HTTPProtocolFactory
- {
- 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
- #if !BESTHTTP_DISABLE_SERVERSENT_EVENTS && (!UNITY_WEBGL || UNITY_EDITOR)
- case SupportedProtocols.ServerSentEvents: return new ServerSentEvents.EventSourceResponse(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;
- }
- }
- }
|