using System;
using System.IO;

namespace Best.HTTP.Hosts.Connections
{
    public enum SupportedProtocols
    {
        Unknown,
        HTTP,

        WebSocket,

        ServerSentEvents
    }

    public static class HTTPProtocolFactory
    {
        public const string W3C_HTTP1 = "http/1.1";
#if (!UNITY_WEBGL || UNITY_EDITOR) && !BESTHTTP_DISABLE_ALTERNATE_SSL
        public const string W3C_HTTP2 = "h2";
#endif

        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)
            {
                case "ws":
                case "wss":
                    return SupportedProtocols.WebSocket;

                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":

                // WebSocket
                case "wss":
                    return true;
            }

            return false;
        }
    }
}
