aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Azure/Tango.AzureUtils/ExtensionMethods.cs
blob: e521ce4104f3152ca02090fec49937b7c1f5cef1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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;
    }
}