using Microsoft.Azure.Management.AppService.Fluent; using Microsoft.WindowsAzure.Storage.Blob; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.AzureUtils; using Tango.AzureUtils.Deployment; using Tango.Core; public static class ExtensionMethods { public static async Task GetMachineServiceSettingsAsync(this IWebAppBase app, bool throwOnMissing = true) { MachineServiceSettings settings = new MachineServiceSettings(); var s = await app.GetAppSettingsAsync(); foreach (var prop in typeof(MachineServiceSettings).GetProperties()) { if (s.ContainsKey(prop.Name)) { prop.SetValue(settings, s[prop.Name].Value); } else if (throwOnMissing) { throw new KeyNotFoundException($"Missing application setting '{prop.Name}' on '{app.Name}'."); } else { prop.SetValue(settings, "N/A"); } } return settings; } public static DataSource ToDataSource(this MachineServiceSettings settings) { DataSource dataSource = new DataSource(); dataSource.Type = DataSourceType.SQLServer; dataSource.Address = settings.DB_ADDRESS; dataSource.Catalog = settings.DB_CATALOG; dataSource.UserName = settings.DB_USER_NAME; dataSource.Password = settings.DB_PASSWORD; dataSource.IntegratedSecurity = false; return dataSource; } public static String GetSharedAccessUrl(this CloudBlobContainer container) { String sas = container.GetSharedAccessSignature(new Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPolicy() { Permissions = SharedAccessBlobPermissions.Read | SharedAccessBlobPermissions.Write | SharedAccessBlobPermissions.List | SharedAccessBlobPermissions.Delete | SharedAccessBlobPermissions.Add, }); sas = new Uri(container.Uri + sas).ToString(); return sas; } }