public static bool IsKeyRequired(string API)
        {
            WeatherProviderImpl provider = null;
            bool needsKey = false;

            provider = GetProvider(API);

            needsKey = provider.KeyRequired;
            provider = null;
            return(needsKey);
        }
        // Static Methods
        public static WeatherProviderImpl GetProvider(string API)
        {
            WeatherProviderImpl providerImpl = null;

            switch (API)
            {
            case WeatherAPI.Yahoo:
                providerImpl = new YahooWeatherProvider();
                break;

            case WeatherAPI.WeatherUnderground:
                providerImpl = new WeatherUndergroundProvider();
                break;

            case WeatherAPI.Here:
                providerImpl = new HEREWeatherProvider();
                break;

            case WeatherAPI.OpenWeatherMap:
                providerImpl = new OpenWeatherMapProvider();
                break;

            case WeatherAPI.MetNo:
                providerImpl = new MetnoWeatherProvider();
                break;

            default:
                break;
            }

            if (providerImpl == null)
            {
                throw new ArgumentNullException(nameof(API), "Invalid API name! This API is not supported");
            }

            return(providerImpl);
        }
        public void UpdateAPI()
        {
            string API = Settings.API;

            WeatherProvider = GetProvider(API);
        }