Skip to content

Instantly share code, notes, and snippets.

@shibayan
Last active April 3, 2017 19:18
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save shibayan/d07ac1a7c98ecf0daf8c to your computer and use it in GitHub Desktop.
Save shibayan/d07ac1a7c98ecf0daf8c to your computer and use it in GitHub Desktop.
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
namespace WebApplication27
{
public static class WebsiteEnvironment
{
public static bool IsAvailable => !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("WEBSITE_SITE_NAME"));
public static bool Is64BitPlatform => Environment.Is64BitProcess;
public static string InstanceId => Environment.GetEnvironmentVariable("WEBSITE_INSTANCE_ID");
public static string ShortInstanceId => InstanceId?.Substring(0, 6);
public static string SiteName => Environment.GetEnvironmentVariable("WEBSITE_SITE_NAME");
public static string HostName => Environment.GetEnvironmentVariable("WEBSITE_HOSTNAME");
public static string IisSiteName => Environment.GetEnvironmentVariable("WEBSITE_IIS_SITE_NAME");
public static string SlotName => Environment.GetEnvironmentVariable("WEBSITE_SLOT_NAME");
public static string OwnerName = Environment.GetEnvironmentVariable("WEBSITE_OWNER_NAME");
public static bool AuthEnabled => EnvironmentHelper.GetBoolean("WEBSITE_AUTH_ENABLED");
public static bool HttpLoggingEnabled => EnvironmentHelper.GetBoolean("WEBSITE_HTTPLOGGING_ENABLED");
public static bool ScmAlwaysOnEnabled => EnvironmentHelper.GetBoolean("WEBSITE_SCM_ALWAYS_ON_ENABLED");
public static bool LocalCacheEnabled => EnvironmentHelper.GetBoolean("WEBSITE_LOCALCACHE_ENABLED");
public static bool ScmSeparateStatus => EnvironmentHelper.GetBoolean("WEBSITE_SCM_SEPARATE_STATUS");
public static WebsiteComputeMode? ComputeMode => EnvironmentHelper.GetEnum<WebsiteComputeMode>("WEBSITE_COMPUTE_MODE");
public static WebsiteSiteMode? SiteMode => EnvironmentHelper.GetEnum<WebsiteSiteMode>("WEBSITE_SITE_MODE");
public static WebsiteSku? Sku => EnvironmentHelper.GetEnum<WebsiteSku>("WEBSITE_SKU");
public static IDictionary<string, string> AppSettings => EnvironmentHelper.GetVariables("APPSETTING_");
public static IDictionary<string, string> MySqlConnections => EnvironmentHelper.GetVariables("MYSQLCONNSTR_");
public static IDictionary<string, string> SqlServerConnections => EnvironmentHelper.GetVariables("SQLAZURECONNSTR_");
internal class EnvironmentHelper
{
internal static bool GetBoolean(string name)
{
bool result;
return bool.TryParse(Environment.GetEnvironmentVariable(name), out result) && result;
}
internal static TEnum? GetEnum<TEnum>(string name) where TEnum : struct
{
return EnumHelper.Convert<TEnum>(Environment.GetEnvironmentVariable(name));
}
internal static IDictionary<string, string> GetVariables(string prefix)
{
return Environment.GetEnvironmentVariables()
.Cast<DictionaryEntry>()
.Where(p => ((string)p.Key).StartsWith(prefix))
.ToDictionary(p => ((string)p.Key).Substring(prefix.Length), p => (string)p.Value);
}
}
internal class EnumHelper
{
internal static TEnum? Convert<TEnum>(string name) where TEnum : struct
{
TEnum result;
if (Enum.TryParse(name, true, out result))
{
return result;
}
return null;
}
}
public enum WebsiteComputeMode
{
Shared,
Dedicated
}
public enum WebsiteSiteMode
{
Limited,
Basic
}
public enum WebsiteSku
{
Free,
Shared,
Basic,
Standard,
Premium
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment