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<MachineServiceSettings> 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;
}
}