using System;

namespace NzbDrone.Common.EnvironmentInfo
{
    public enum PlatformType
    {
        DotNet = 0,
        Mono = 1,
        NetCore = 2
    }

    public interface IPlatformInfo
    {
        Version Version { get; }
    }

    public class PlatformInfo : IPlatformInfo
    {
        private static PlatformType _platform;
        private static Version _version;

        static PlatformInfo()
        {
            _platform = PlatformType.NetCore;
            _version = Environment.Version;
        }

        public static PlatformType Platform => _platform;
        public static bool IsMono => Platform == PlatformType.Mono;
        public static bool IsDotNet => Platform == PlatformType.DotNet;
        public static bool IsNetCore => Platform == PlatformType.NetCore;

        public static string PlatformName
        {
            get
            {
                if (IsDotNet)
                {
                    return ".NET";
                }
                else if (IsMono)
                {
                    return "Mono";
                }
                else
                {
                    return ".NET Core";
                }
            }
        }

        public Version Version => _version;

        public static Version GetVersion()
        {
            return _version;
        }
    }
}
