/// <summary>
        /// Configure the app for .NET Core on Windows OS
        /// </summary>
        public AppServiceWebAppConfiguration UseDotNetCoreWithWindows()
        {
            if (Metadata == null)
            {
                Metadata = new List <AzureNameValuePair>();
            }

            AzureNameValuePair.AddOrSet(Metadata, "CURRENT_STACK", "dotnetcore");
            return(this);
        }
        /// <summary>
        /// Configure the app for .NET Framework
        /// </summary>
        /// <param name="version">.NET Framework version ("v3.5" or "v4.0")</param>
        /// <remarks>
        ///     Version number is not validated!
        /// </remarks>
        public AppServiceWebAppConfiguration UseDotNetFramework(string version)
        {
            if (Metadata == null)
            {
                Metadata = new List <AzureNameValuePair>();
            }

            DotNetFrameworkVersion = version;
            AzureNameValuePair.AddOrSet(Metadata, "CURRENT_STACK", "dotnet");
            return(this);
        }
        /// <summary>
        /// Configure the app for Python with Windows OS
        /// </summary>
        /// <param name="version">Python version number - only the version number portion</param>
        /// <remarks>
        ///     Version number is not validated!
        /// </remarks>
        public AppServiceWebAppConfiguration UsePythonWithWindows(string version)
        {
            if (Metadata == null)
            {
                Metadata = new List <AzureNameValuePair>();
            }

            AzureNameValuePair.AddOrSet(Metadata, "CURRENT_STACK", "python");
            PythonVersion = version;

            return(this);
        }
        /// <summary>
        /// Configure the app for Node.Js with Windows OS
        /// </summary>
        /// <param name="version">Node.js version number - only the version number portion</param>
        /// <remarks>
        ///     Version number is not validated!
        /// </remarks>
        public AppServiceWebAppConfiguration UseNodeJsWithWindows(string version)
        {
            if (Metadata == null)
            {
                Metadata = new List <AzureNameValuePair>();
            }

            AzureNameValuePair.AddOrSet(Metadata, "CURRENT_STACK", "node");
            AddAppSetting("WEBSITE_NODE_DEFAULT_VERSION", version);
            NodeJsVersion = version;

            return(this);
        }
        /// <summary>
        /// Configure the app for Java with Windows OS
        /// </summary>
        /// <param name="containerName">Name of the Java container (eg: Java, Tomcat, Wildfly)</param>
        /// <param name="containerVersion">Version number of the Java container</param>
        /// <param name="javaVersion">Version number of Java</param>
        /// <remarks>
        ///     Version number is not validated!
        /// </remarks>
        public AppServiceWebAppConfiguration UseJavaWithWindows(string containerName, string containerVersion, string javaVersion)
        {
            JavaContainerName    = containerName;
            JavaContainerVersion = containerVersion;
            JavaVersion          = javaVersion;

            if (Metadata == null)
            {
                Metadata = new List <AzureNameValuePair>();
            }

            AzureNameValuePair.AddOrSet(Metadata, "CURRENT_STACK", "java");
            return(this);
        }
 /// <summary>
 /// Convert app settings structure into a dictionary
 /// </summary>
 /// <returns>Dictionary equivalent of app settings</returns>
 public IDictionary <string, string> GetAppSettings() => AzureNameValuePair.ToDictionary(AppSettings);