Beispiel #1
0
        public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request)
        {
            var token        = request.DataStore.GetJson("AzureToken", "access_token");
            var subscription = request.DataStore.GetJson("SelectedSubscription", "SubscriptionId");
            var sitename     = request.DataStore.GetJson("SiteName");

            dynamic obj = new ExpandoObject();

            obj.hostName       = ".azurewebsites.net";
            obj.siteName       = sitename;
            obj.subscriptionId = subscription;

            AzureHttpClient client         = new AzureHttpClient(token, subscription);
            var             statusResponse = await client.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Post, @"https://web1.appsvcux.ext.azure.com/websites/api/Websites/ValidateSiteName",
                                                                                               JsonUtility.GetJsonStringFromObject(obj));

            var response = await statusResponse.Content.ReadAsStringAsync();

            if (!statusResponse.IsSuccessStatusCode)
            {
                return(new ActionResponse(ActionStatus.FailureExpected, JsonUtility.GetJsonObjectFromJsonString(response), null, AzureErrorCodes.AzureWebsiteNameTaken));
            }

            return(new ActionResponse(ActionStatus.Success, response));
        }
Beispiel #2
0
        public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request)
        {
            var             azureToken = request.DataStore.GetJson("AzureToken")["access_token"].ToString();
            AzureHttpClient client     = new AzureHttpClient(azureToken);

            string environmentBody = "{}";
            string environmentUrl  = $"{BASE_POWER_APPS_URL}/environments?api-version=2016-11-01&$filter=minimumAppPermission%20eq%20%27CanEdit%27&$expand=Permissions&_poll=true";

            var environmentsResponse = await client.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Get, environmentUrl, environmentBody);

            var environmentsString = await environmentsResponse.Content.ReadAsStringAsync();

            var environments = JsonUtility.GetJsonObjectFromJsonString(environmentsString);

            foreach (var environment in environments["value"])
            {
                bool isDefault = false;
                bool.TryParse(environment["properties"]["isDefault"].ToString(), out isDefault);
                if (isDefault && environment["properties"]["permissions"]["CreatePowerApp"] != null)
                {
                    request.DataStore.AddToDataStore("PowerAppEnvironment", environment["name"].ToString(), DataStoreType.Private);
                    return(new ActionResponse(ActionStatus.Success, JsonUtility.GetEmptyJObject()));
                }
                ;
            }

            return(new ActionResponse(ActionStatus.Failure, JsonUtility.GetEmptyJObject(), "PowerAppNoEnvironment"));
            //TODO: Add this error message to common
        }
        public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request)
        {
            string tokenAzure      = request.DataStore.GetJson("AzureToken", "access_token");
            var    functionAppName = request.DataStore.GetValue("functionName");

            var zipFileBinary = this.GenerateZipFile(request);

            var client = new AzureHttpClient(tokenAzure);
            var url    = $"https://{functionAppName}.scm.azurewebsites.net/api/zipdeploy";

            var result = await client.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Post, url, zipFileBinary);

            if (result.IsSuccessStatusCode)
            {
                return(new ActionResponse(ActionStatus.Success));
            }

            var response = await result.Content.ReadAsStringAsync();

            return(new ActionResponse(
                       ActionStatus.Failure,
                       JsonUtility.GetJObjectFromJsonString(response),
                       null,
                       DefaultErrorCodes.DefaultErrorCode,
                       "Error uploading function code"));
        }
Beispiel #4
0
        public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request)
        {
            var             azureToken = request.DataStore.GetJson("AzureToken", "access_token");
            AzureHttpClient client     = new AzureHttpClient(azureToken);

            string newSqlConnectionId  = GetNewSqlConnectionId();
            string powerAppEnvironment = request.DataStore.GetValue("PowerAppEnvironment");

            if (powerAppEnvironment == null)
            {
                return(new ActionResponse(ActionStatus.Success, JsonUtility.GetEmptyJObject()));
            }

            string         sqlConnectionString = request.DataStore.GetValueAtIndex("SqlConnectionString", "SqlServerIndex");
            SqlCredentials sqlCredentials      = SqlUtility.GetSqlCredentialsFromConnectionString(sqlConnectionString);

            string body = $"{{\"properties\":{{\"environment\":{{\"id\":\"/providers/Microsoft.PowerApps/environments/{powerAppEnvironment}\",\"name\":\"{powerAppEnvironment}\"}},\"connectionParameters\":{{\"server\":\"{sqlCredentials.Server}\",\"database\":\"{sqlCredentials.Database}\",\"username\":\"{sqlCredentials.Username}\",\"password\":\"{sqlCredentials.Password}\"}}}}}}";
            string url  = $"{BASE_POWER_APPS_URL}/apis/shared_sql/connections/{newSqlConnectionId}?api-version=2016-11-01&$filter=environment%20eq%20%27{powerAppEnvironment}%27";

            await client.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Put, url, body);

            //TODO: if create fails return failure

            request.DataStore.AddToDataStore("PowerAppSqlConnectionId", newSqlConnectionId, DataStoreType.Private);

            return(new ActionResponse(ActionStatus.Success, JsonUtility.GetEmptyJObject()));
        }
        public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request)
        {
            var azureToken     = request.DataStore.GetJson("AzureToken", "access_token");
            var environmentIds = request.DataStore.GetAllValues("EnvironmentIds");

            AzureHttpClient client = new AzureHttpClient(azureToken);


            foreach (var environment in environmentIds)
            {
                var response = await client.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Delete, $"https://management.azure.com/providers/Microsoft.PowerApps/environments/{environment}?api-version=2016-11-01", "{}");

                var responseString = await response.Content.ReadAsStringAsync();

                var responseParsed = JsonUtility.GetJsonObjectFromJsonString(responseString);

                //if(!response.IsSuccessStatusCode)
                // {
                //     return new ActionResponse(ActionStatus.Failure);
                // }
            }


            return(new ActionResponse(ActionStatus.Success));
        }
Beispiel #6
0
        public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request)
        {
            var azureToken  = request.DataStore.GetJson("AzureToken")["access_token"].ToString();
            var environId   = request.DataStore.GetValue("EnvironmentID").ToString();
            var entityName  = request.DataStore.GetValue("EntityName").ToString();
            var namespaceID = environId;

            if (environId.Contains("Legacy"))
            {
                int indexFrom = environId.IndexOf("Legacy-") + "Legacy-".Length;
                int indexTo   = environId.Length;

                namespaceID = environId.Substring(indexFrom, indexTo - indexFrom);
            }

            AzureHttpClient client = new AzureHttpClient(azureToken);

            var response = await client.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Get, $"https://management.azure.com/providers/Microsoft.CommonDataModel/environments/{environId}/namespaces/{namespaceID}/entities?api-version=2016-11-01&$expand=namespace", "{}");

            var responseString = await response.Content.ReadAsStringAsync();

            var responseParsed = JsonUtility.GetJsonObjectFromJsonString(responseString);

            foreach (var obj in responseParsed["value"])
            {
                if (entityName == obj["name"].ToString())
                {
                    return(new ActionResponse(ActionStatus.FailureExpected));
                }
            }
            return(new ActionResponse(ActionStatus.Success));
        }
Beispiel #7
0
        public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request)
        {
            var azureToken   = request.DataStore.GetJson("AzureToken");
            var subscription = request.DataStore.GetJson("SelectedSubscription", "SubscriptionId");

            JObject graphToken = AzureTokenUtility.GetTokenForResource(request, azureToken, "https://graph.windows.net");

            var tenantId = AzureUtility.GetTenantFromToken(request.DataStore.GetJson("AzureToken"));

            // Generate new key for ClientSecret
            string key          = GetNewKey();
            string graphUriBase = "https://graph.windows.net/{0}/applications";

            string graphApi = string.Format(graphUriBase, tenantId);

            AzureHttpClient client  = new AzureHttpClient(graphToken["access_token"].ToString(), subscription);
            dynamic         payload = new ExpandoObject();

            payload.displayName             = "solutiontemplate";
            payload.availableToOtherTenants = false;
            payload.homepage          = "www.test.com";
            payload.identifierUris    = new string[1];
            payload.identifierUris[0] = "https://test.com/" + RandomGenerator.GetRandomLowerCaseCharacters(10);

            payload.passwordCredentials              = new ExpandoObject[1];
            payload.passwordCredentials[0]           = new ExpandoObject();
            payload.passwordCredentials[0].startDate = DateTime.UtcNow.ToString("o");
            payload.passwordCredentials[0].endDate   = DateTime.UtcNow.AddYears(3).ToString("o");
            payload.passwordCredentials[0].keyId     = Guid.NewGuid();
            payload.passwordCredentials[0].value     = key;

            string body = JsonUtility.GetJsonStringFromObject(payload);

            var response = await client.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Post, graphApi + "?api-version=1.6", body);

            string responseBody = await response.Content.ReadAsStringAsync();

            JObject responseBodyObj = JsonUtility.GetJObjectFromJsonString(responseBody);

            if (response.IsSuccessStatusCode)
            {
                string appId = responseBodyObj["appId"].ToString();
                string obbId = responseBodyObj["objectId"].ToString();

                responseBodyObj.Add("SPNAppId", appId);
                responseBodyObj.Add("SPNKey", key);
                responseBodyObj.Add("SPNUser", "app:" + appId + "@" + tenantId);
                responseBodyObj.Add("SPNTenantId", tenantId);

                // Delete the SPN if required
                //string graphUriBaseWithApplication = "https://graph.windows.net/{0}/applications/{1}";
                //string graphApiWithApp = string.Format(graphUriBaseWithApplication, tenantId, obbId);
                //response = await client.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Delete, graphApiWithApp + "?api-version=1.6", body);

                return(new ActionResponse(ActionStatus.Success, responseBodyObj, true));
            }

            return(new ActionResponse(ActionStatus.Failure, responseBody, null, null, "Unable to create a Service Principal"));
        }
Beispiel #8
0
        public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request)
        {
            var azureToken = request.DataStore.GetJson("AzureToken")["access_token"].ToString();

            AzureHttpClient client = new AzureHttpClient(azureToken);

            var responseWithNames = await client.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Get, $"https://management.azure.com/providers/Microsoft.PowerApps/environments?api-version=2016-11-01", "{}");

            var responseStringWithNames = await responseWithNames.Content.ReadAsStringAsync();

            var responseParsedWithNames = JsonUtility.GetJsonObjectFromJsonString(responseStringWithNames);

            var response = await client.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Get, $"https://management.azure.com/providers/Microsoft.PowerApps/environments?api-version=2016-11-01&$filter=minimumAppPermission%20eq%20%27CanEdit%27&$expand=Permissions&_poll=true", "{}");

            var responseString = await response.Content.ReadAsStringAsync();

            var responseParsed = JsonUtility.GetJsonObjectFromJsonString(responseString);

            var objectToSerialize = new RootObject();

            objectToSerialize.environments = new List <Environment>
            {
            };

            foreach (var env in responseParsed["value"])
            {
                if (env["properties"]["permissions"]["CreateDatabase"] != null)
                {
                    foreach (var obj in responseParsedWithNames["value"])
                    {
                        if (obj["name"].ToString() == env["name"].ToString())
                        {
                            objectToSerialize.environments.Add(new Environment {
                                id = obj["name"].ToString(), name = obj["properties"]["displayName"].ToString()
                            });
                        }
                    }
                }
                ;
            }

            var responseToReturn = JsonUtility.GetJsonStringFromObject(objectToSerialize);

            return(new ActionResponse(ActionStatus.Success, responseToReturn));
        }
        public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request)
        {
            string              token        = request.DataStore.GetJson("AzureToken", "access_token");
            string              subscription = request.DataStore.GetJson("SelectedSubscription", "SubscriptionId");
            string              uri          = "https://api.powerbi.com/v1.0/myorg/groups";
            AzureHttpClient     ahc          = new AzureHttpClient(token, subscription);
            HttpResponseMessage response     = await ahc.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Get, uri, "{}");

            return(response.IsSuccessStatusCode ? new ActionResponse(ActionStatus.Success) : new ActionResponse(ActionStatus.Failure));
        }
        public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request)
        {
            var azureToken    = request.DataStore.GetJson("AzureToken", "access_token");
            var subscription  = request.DataStore.GetJson("SelectedSubscription", "SubscriptionId");
            var resourceGroup = request.DataStore.GetValue("SelectedResourceGroup");
            var location      = request.DataStore.GetJson("SelectedLocation", "Name");
            var sitename      = request.DataStore.GetValue("FunctionName");

            List <KeyValuePair <string, string> > appSettings = new List <KeyValuePair <string, string> >();

            if (request.DataStore.GetJson("AppSettingKeys") != null)
            {
                foreach (var item in request.DataStore.GetJson("AppSettingKeys"))
                {
                    string key   = item.Path.Split('.').Last();
                    string value = (string)item;
                    appSettings.Add(new KeyValuePair <string, string>(key, value));
                }
            }

            AzureHttpClient client = new AzureHttpClient(azureToken, subscription, resourceGroup);
            dynamic         obj    = new ExpandoObject();

            obj.subscriptionId       = subscription;
            obj.siteId               = new ExpandoObject();
            obj.siteId.Name          = sitename;
            obj.siteId.ResourceGroup = resourceGroup;
            obj.connectionStrings    = new ExpandoObject[appSettings.Count];
            obj.location             = location;
            if (appSettings.Count != 0)
            {
                for (int i = 0; i < appSettings.Count; i++)
                {
                    obj.connectionStrings[i] = new ExpandoObject();
                    obj.connectionStrings[i].ConnectionString = appSettings[i].Value;
                    obj.connectionStrings[i].Name             = appSettings[i].Key;
                    obj.connectionStrings[i].Type             = 2;
                }
            }

            var appSettingCreated = await client.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Post, @"https://web1.appsvcux.ext.azure.com/websites/api/Websites/UpdateConfigConnectionStrings",
                                                                                      JsonUtility.GetJsonStringFromObject(obj));

            var response = await appSettingCreated.Content.ReadAsStringAsync();

            if (!appSettingCreated.IsSuccessStatusCode)
            {
                return(new ActionResponse(ActionStatus.Failure, JsonUtility.GetJObjectFromJsonString(response),
                                          null, DefaultErrorCodes.DefaultErrorCode, "Error creating appsetting"));
            }

            return(new ActionResponse(ActionStatus.Success));
        }
        // Starts the specified Stream Analytics job
        public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request)
        {
            string              token         = request.DataStore.GetJson("AzureToken", "access_token");
            string              subscription  = request.DataStore.GetJson("SelectedSubscription", "SubscriptionId");
            string              resourceGroup = request.DataStore.GetValue("SelectedResourceGroup");
            string              apiVersion    = "2015-10-01";
            string              jobName       = request.DataStore.GetValue("SAJob");
            string              uri           = $"https://management.azure.com/subscriptions/{subscription}/resourceGroups/{resourceGroup}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}/start?api-version={apiVersion}";
            AzureHttpClient     ahc           = new AzureHttpClient(token, subscription);
            HttpResponseMessage response      = await ahc.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Post, uri, "{}");

            return(response.IsSuccessStatusCode ? new ActionResponse(ActionStatus.Success) : new ActionResponse(ActionStatus.Failure));
        }
        public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request)
        {
            string token         = request.DataStore.GetJson("AzureToken", "access_token");
            string subscription  = request.DataStore.GetJson("SelectedSubscription", "SubscriptionId");
            string resourceGroup = request.DataStore.GetValue("SelectedResourceGroup");
            string ehnamespace   = request.DataStore.GetValue("ActivityLogNamespace");
            string apiVersion    = "2015-10-01";
            string inputAlias    = "EventHubInput";
            string jobName       = request.DataStore.GetValue("SAJob");
            bool   keyResponse   = await GetEventHubPrimaryKey(request, token, subscription, resourceGroup, ehnamespace);

            if (!keyResponse)
            {
                return(new ActionResponse(ActionStatus.Failure));
            }
            string          primaryKey = request.DataStore.GetValue("primaryKey");
            string          uri        = $"https://management.azure.com/subscriptions/{subscription}/resourceGroups/{resourceGroup}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}/inputs/{inputAlias}?api-version={apiVersion}";
            string          body       = $"{{    \r\n   \"properties\":{{    \r\n      \"type\":\"stream\",  \r\n      \"serialization\":{{    \r\n         \"type\":\"Json\",  \r\n         \"properties\":{{    \r\n            \"fieldDelimiter\":\",\",  \r\n            \"encoding\":\"UTF8\"  \r\n         }}  \r\n      }},  \r\n      \"datasource\":{{    \r\n         \"type\":\"Microsoft.ServiceBus/EventHub\",  \r\n         \"properties\":{{    \r\n            \"serviceBusNamespace\":\"{ehnamespace}\",  \r\n            \"sharedAccessPolicyName\":\"RootManageSharedAccessKey\",  \r\n            \"sharedAccessPolicyKey\":\"{primaryKey}\",  \r\n            \"eventHubName\":\"insights-operational-logs\"  \r\n         }}  \r\n      }}  \r\n   }}  \r\n}}";
            AzureHttpClient ahc        = new AzureHttpClient(token, subscription);
            // API call to set entire input
            HttpResponseMessage response = await ahc.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Put, uri, body);

            if (!response.IsSuccessStatusCode)
            {
                for (int i = 0; i < 5; i++)
                {
                    response = await ahc.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Put, uri, body);

                    if (response.IsSuccessStatusCode)
                    {
                        return(new ActionResponse(ActionStatus.Success));
                    }
                    Thread.Sleep(4000);
                }
            }
            return(response.IsSuccessStatusCode ? new ActionResponse(ActionStatus.Success) : new ActionResponse(ActionStatus.Failure));
        }
        public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request)
        {
            string bapiService = request.DataStore.GetLastValue("BapiService");

            AzureHttpClient ahc = new AzureHttpClient(request.DataStore.GetJson("AzureToken", "access_token"));

            var enrollResponse = await ahc.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Post, $"{BASE_AZURE_ENROLL_URL}/{bapiService}/enroll?api-version=2016-11-01&id=@id", "{}");

            if (enrollResponse.StatusCode != System.Net.HttpStatusCode.OK)
            {
                request.DataStore.AddToDataStore("SkipPowerApp", "true", DataStoreType.Public);
            }

            return(new ActionResponse(ActionStatus.Success));
        }
        // Updates the default query provided by a Stream Analytics job
        public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request)
        {
            string              token         = request.DataStore.GetJson("AzureToken", "access_token");
            string              subscription  = request.DataStore.GetJson("SelectedSubscription", "SubscriptionId");
            string              resourceGroup = request.DataStore.GetValue("SelectedResourceGroup");
            string              jobName       = request.DataStore.GetValue("nameStreamAnalyticsJob");
            string              apiVersion    = "2015-10-01";
            string              funcName      = "ConvertBlobToJSON";
            string              uri           = $"https://management.azure.com/subscriptions/{subscription}/resourceGroups/{resourceGroup}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}/functions/{funcName}?api-version={apiVersion}";
            string              script        = "function main(InputJSON) {\n    return JSON.parse(InputJSON);\n}";
            string              body          = $"{{\"properties\": {{\"type\": \"Scalar\", \"properties\": {{\"inputs\": [{{\"dataType\": \"any\"}}],\"output\": {{\"dataType\": \"nvarchar(max)\"}}, \"binding\": {{\"type\": \"Microsoft.StreamAnalytics/JavascriptUdf\", \"properties\": {{\"script\":\"{script}\" }}}}}}}}}}";
            AzureHttpClient     ahc           = new AzureHttpClient(token, subscription);
            HttpResponseMessage response      = await ahc.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Put, uri, body);

            return(response.IsSuccessStatusCode ? new ActionResponse(ActionStatus.Success) : new ActionResponse(ActionStatus.Failure));
        }
        public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request)
        {
            var azureToken = request.DataStore.GetJson("AzureToken", "access_token");
            var environId  = request.DataStore.GetJson("EnvironmentID").ToString();

            AzureHttpClient client = new AzureHttpClient(azureToken);

            var response = await client.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Post, "https://management.azure.com/providers/Microsoft.CommonDataModel/namespaces?api-version=2016-11-01&id=@id", $"{{\"EnvironmentName\":\"{environId}\",\"isOpenTenant\":\"True\"}}");

            var responseString = await response.Content.ReadAsStringAsync();

            //var environId = responseParsed["properties"]["settings"]["portalCurrentEnvironmentName"].ToString();

            //request.DataStore.AddToDataStore("environId", environId, DataStoreType.Public);

            return(new ActionResponse(ActionStatus.Success));
        }
Beispiel #16
0
        public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request)
        {
            var azureToken    = request.DataStore.GetJson("AzureToken", "access_token");
            var subscription  = request.DataStore.GetJson("SelectedSubscription", "SubscriptionId");
            var resourceGroup = request.DataStore.GetValue("SelectedResourceGroup");
            var location      = request.DataStore.GetJson("SelectedLocation", "Name");
            var sitename      = request.DataStore.GetValue("FunctionName");

            AzureHttpClient client = new AzureHttpClient(azureToken, subscription, resourceGroup);

            // Force sync
            dynamic obj = new ExpandoObject();

            obj.subscriptionId       = subscription;
            obj.SiteId               = new ExpandoObject();
            obj.SiteId.Name          = sitename;
            obj.SiteId.ResourceGroup = resourceGroup;
            HttpResponseMessage result = await client.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Post, "https://web1.appsvcux.ext.azure.com/websites/api/Websites/KuduSync", JsonUtility.GetJsonStringFromObject(obj));

            var resultBody = await result.Content.ReadAsStringAsync();


            while (true)
            {
                result = await client.ExecuteWithSubscriptionAndResourceGroupAsync(HttpMethod.Get, $"/providers/Microsoft.Web/sites/{sitename}/deployments", "2016-08-01", "");

                resultBody = await result.Content.ReadAsStringAsync();

                if (result.IsSuccessStatusCode)
                {
                    var jobj = JsonUtility.GetJObjectFromJsonString(resultBody);
                    if (jobj["value"] != null && (jobj["value"] as JArray).Count > 0)
                    {
                        if (bool.Parse(jobj["value"][0]["properties"]["complete"].ToString()) == true)
                        {
                            break;
                        }
                    }
                }

                await Task.Delay(5000);
            }

            return(new ActionResponse(ActionStatus.Success));
        }
        // Configures Stream Analyitcs to receive data from Event Hub
        public async Task <bool> GetEventHubPrimaryKey(ActionRequest request, string token, string subscription, string resourceGroup, string ehnamespace)
        {
            string              apiVersion = "2014-09-01";
            string              uri        = $"https://management.azure.com/subscriptions/{subscription}/resourceGroups/{resourceGroup}/providers/Microsoft.EventHub/namespaces/{ehnamespace}/AuthorizationRules/RootManageSharedAccessKey/listkeys?api-version={apiVersion}";
            AzureHttpClient     ahc        = new AzureHttpClient(token, subscription);
            HttpResponseMessage response   = await ahc.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Post, uri, "{}");

            if (response.IsSuccessStatusCode)
            {
                string keyString = await response.Content.ReadAsStringAsync();

                JObject keys       = JsonUtility.GetJObjectFromJsonString(keyString);
                string  primaryKey = keys.GetValue("primaryKey").ToString();
                request.DataStore.AddToDataStore("primaryKey", primaryKey);
                return(true);
            }
            return(false);
        }
        public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request)
        {
            var azureToken = request.DataStore.GetJson("AzureToken", "access_token");
            var objectIds  = request.DataStore.GetValue("objectIds").ToString();

            AzureHttpClient client = new AzureHttpClient(azureToken);

            var response = await client.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Get, $"https://management.azure.com/providers/Microsoft.PowerApps/objectIds/{objectIds}/userSettings/environment?api-version=2016-11-01", "{}");

            var responseString = await response.Content.ReadAsStringAsync();

            var responseParsed = JsonUtility.GetJsonObjectFromJsonString(responseString);
            var environId      = responseParsed["properties"]["settings"]["portalCurrentEnvironmentName"].ToString();

            request.DataStore.AddToDataStore("EnvironmentID", environId, DataStoreType.Public);

            return(new ActionResponse(ActionStatus.Success));
        }
        // Updates the default query provided by a Stream Analytics job
        public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request)
        {
            string              token              = request.DataStore.GetJson("AzureToken", "access_token");
            string              subscription       = request.DataStore.GetJson("SelectedSubscription", "SubscriptionId");
            string              resourceGroup      = request.DataStore.GetValue("SelectedResourceGroup");
            string              jobName            = request.DataStore.GetValue("SAJob");
            string              transformationName = "Transformation";
            string              apiVersion         = "2015-10-01";
            string              query              = File.ReadAllText(Path.Combine(request.Info.App.AppFilePath, "Service/TextHelpers/SAquery.txt"));
            string              uri      = $"https://management.azure.com/subscriptions/{subscription}/resourceGroups/{resourceGroup}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}/transformations/{transformationName}?api-version={apiVersion}";
            string              input    = request.DataStore.GetValue("inputAlias");
            string              output   = request.DataStore.GetValue("outputAlias");
            string              body     = $"{{\"properties\":{{\"streamingUnits\":1,\"query\":\"{query}\"}}}}";
            AzureHttpClient     ahc      = new AzureHttpClient(token, subscription);
            HttpResponseMessage response = await ahc.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Put, uri, body);

            return(response.IsSuccessStatusCode ? new ActionResponse(ActionStatus.Success) : new ActionResponse(ActionStatus.Failure));
        }
Beispiel #20
0
        public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request)
        {
            var azureToken      = request.DataStore.GetJson("AzureToken", "access_token");
            var location        = request.DataStore.GetValue("Location").ToString();
            var environmentName = request.DataStore.GetJson("EnvironmentName").ToString();

            AzureHttpClient client = new AzureHttpClient(azureToken);

            var response = await client.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Post, "https://management.azure.com/providers/Microsoft.BusinessAppPlatform/environments?api-version=2016-11-01&id=/providers/Microsoft.BusinessAppPlatform/scopes/admin/environments", $"{{\"location\":\"{location}\",\"properties\":{{\"displayName\":\"{environmentName}\"}}}}");

            var responseString = await response.Content.ReadAsStringAsync();

            var responseParsed = JsonUtility.GetJsonObjectFromJsonString(responseString);
            var environId      = responseParsed["name"].ToString();

            request.DataStore.AddToDataStore("EnvironmentID", environId, DataStoreType.Public);

            return(new ActionResponse(ActionStatus.Success));
        }
Beispiel #21
0
        public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request)
        {
            var             azureToken = request.DataStore.GetJson("AzureToken")["access_token"].ToString();
            AzureHttpClient client     = new AzureHttpClient(azureToken);

            var response = await client.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Post, "https://management.azure.com/providers/Microsoft.PowerApps/enroll?api-version=2016-11-01&id=@id", "{}");

            var responseString = await response.Content.ReadAsStringAsync();

            var responseParsed = JsonUtility.GetJsonObjectFromJsonString(responseString);
            var objectId       = responseParsed["featuresEnabled"][0]["id"].ToString();

            int indexFrom = objectId.IndexOf("objectIds/") + "objectIds/".Length;
            int indexTo   = objectId.LastIndexOf("/features");

            objectId = objectId.Substring(indexFrom, indexTo - indexFrom);
            request.DataStore.AddToDataStore("ObjectID", objectId, DataStoreType.Public);

            return(new ActionResponse(ActionStatus.Success));
        }
        public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request)
        {
            string azureToken  = request.DataStore.GetJson("AzureToken", "access_token");
            string bapiService = request.DataStore.GetLastValue("BapiService");

            AzureHttpClient client = new AzureHttpClient(azureToken);

            string enrollBody = "{}";
            string enrollUrl  = $"{BASE_AZURE_ENROLL_URL}/{bapiService}/enroll?api-version=2016-11-01&id=@id";

            var enrollResponse = await client.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Post, enrollUrl, enrollBody);

            if (enrollResponse.StatusCode != System.Net.HttpStatusCode.OK)
            {
                //var enrollString = await enrollResponse.Content.ReadAsStringAsync();
                //return new ActionResponse(ActionStatus.Failure, JsonUtility.GetJsonObjectFromJsonString(enrollString), "RegisterProviderError");
                request.DataStore.AddToDataStore("SkipPowerApp", "true", DataStoreType.Public);
            }

            return(new ActionResponse(ActionStatus.Success));
        }
        // Gets the primary policy key for the specified Event Hub namespace
        // Note/Question: A namespace can have multiple event hubs - is this/does this need to be accounted for?
        public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request)
        {
            string              token         = request.DataStore.GetJson("AzureToken", "access_token");
            string              subscription  = request.DataStore.GetJson("SelectedSubscription", "SubscriptionId");
            string              resourceGroup = request.DataStore.GetValue("SelectedResourceGroup");
            string              ehnamespace   = request.DataStore.GetValue("ActivityLogNamespace");
            string              apiVersion    = "2014-09-01";
            string              uri           = $"https://management.azure.com/subscriptions/{subscription}/resourceGroups/{resourceGroup}/providers/Microsoft.EventHub/namespaces/{ehnamespace}/AuthorizationRules/RootManageSharedAccessKey/listkeys?api-version={apiVersion}";
            AzureHttpClient     ahc           = new AzureHttpClient(token, subscription);
            HttpResponseMessage response      = await ahc.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Post, uri, "{}");

            if (response.IsSuccessStatusCode)
            {
                string keyString = await response.Content.ReadAsStringAsync();

                JObject keys       = JsonUtility.GetJObjectFromJsonString(keyString);
                string  primaryKey = keys.GetValue("primaryKey").ToString();
                request.DataStore.AddToDataStore("primaryKey", primaryKey);
                return(new ActionResponse(ActionStatus.Success));
            }
            return(new ActionResponse(ActionStatus.Failure));
        }
Beispiel #24
0
        public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request)
        {
            var azureToken    = request.DataStore.GetJson("AzureToken", "access_token");
            var subscription  = request.DataStore.GetJson("SelectedSubscription", "SubscriptionId");
            var resourceGroup = request.DataStore.GetValue("SelectedResourceGroup");
            var location      = request.DataStore.GetJson("SelectedLocation", "Name");
            var sitename      = request.DataStore.GetValue("FunctionName");

            AzureHttpClient client = new AzureHttpClient(azureToken, subscription, resourceGroup);

            // Force sync
            dynamic obj = new ExpandoObject();

            obj.subscriptionId       = subscription;
            obj.SiteId               = new ExpandoObject();
            obj.SiteId.Name          = sitename;
            obj.SiteId.ResourceGroup = resourceGroup;
            HttpResponseMessage result = await client.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Post, "https://web1.appsvcux.ext.azure.com/websites/api/Websites/KuduSync", JsonUtility.GetJsonStringFromObject(obj));

            var resultBody = await result.Content.ReadAsStringAsync();

            return(await IsReady(client, sitename) ? new ActionResponse(ActionStatus.Success) : new ActionResponse(ActionStatus.Failure));
        }
        public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request)
        {
            var azureToken = request.DataStore.GetJson("AzureToken", "access_token");

            AzureHttpClient client = new AzureHttpClient(azureToken);

            string applicationId   = GetNewPowerAppGuid();
            string applicationName = "TwitterTemplate" + RandomGenerator.GetDateStamp();
            string environmentId   = request.DataStore.GetValue("PowerAppEnvironment");
            string objectId        = JsonUtility.GetWebToken(azureToken, "oid");
            string sqlConnectionId = request.DataStore.GetValue("PowerAppSqlConnectionId");

            JObject resourceStorage = JsonUtility.GetJsonObjectFromJsonString(await client.ExecuteGenericRequestWithHeaderAndReadAsync(HttpMethod.Post, $"{BASE_POWER_APPS_URL}/objectIds/{objectId}/generateResourceStorage?api-version=2016-11-01", $"{{\"environment\":{{\"id\":\"/providers/Microsoft.PowerApps/environments/{environmentId}\",\"name\":\"{environmentId}\"}}}}}}"));

            string sharedAccessSignature = JsonUtility.GetJObjectProperty(resourceStorage, "sharedAccessSignature");

            string backgroundImageUri = sharedAccessSignature.Replace("?", "/logoSmallFile?");
            string documentUri        = sharedAccessSignature.Replace("?", "/document.msapp?");

            JObject initiateDocumentServerSession = JsonUtility.GetJsonObjectFromJsonString(await client.ExecuteGenericRequestWithHeaderAndReadAsync(HttpMethod.Post, $"{BASE_POWER_APPS_URL}/objectIds/{objectId}/initiateDocumentServerSession?api-version=2016-11-01", string.Empty));

            AzureHttpClient clientPA = new AzureHttpClient(azureToken, new Dictionary <string, string>()
            {
                { "AuthoringSessionToken", JsonUtility.GetJObjectProperty(initiateDocumentServerSession, "sessionToken") }
            });

            await clientPA.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Post, $"{CREATE_POWER_APPS_URL}/authoringsession/newinstance?requestedLocation=unitedstates", string.Empty);

            await clientPA.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Get, $"{CREATE_POWER_APPS_URL}/document/util/createdocumentandloadcontext?apptype=0&locale=en-US", string.Empty);

            await clientPA.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Get, $"{CREATE_POWER_APPS_URL}/document/2/getpublishinfo", string.Empty);

            await clientPA.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Post, $"{CREATE_POWER_APPS_URL}/document/2/setpublishinfo", $"{{\"applicationName\":\"{applicationName}\",\"backgroundColorString\":\"RGBA(0,176,240,1)\",\"logoFile\":{{\"_path\":\"default_icon.png\"}},\"logoFileName\":\"default_icon.png\",\"publishDataLocally\":false,\"publishResourcesLocally\":false,\"publishTarget\":null}}");

            await clientPA.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Post, $"{CREATE_POWER_APPS_URL}/document/2/publishtoblobasync", $"{{\"blobURI\":\"{sharedAccessSignature}\",\"docName\":\"{applicationName}\",\"documentSienaUri\":\"/document.msapp\",\"logoSmallUri\":\"/logoSmallFile\"}}");

            await clientPA.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Post, $"{BASE_POWER_APPS_URL}/apps?api-version=2016-11-01", $"{{\"properties\":{{\"appUris\":{{\"documentUri\":{{\"value\":\"{documentUri}\"}}}},\"description\":\"\",\"backgroundColor\":\"RGBA(0,176,240,1)\",\"minClientVersion\":{{\"major\":2,\"minor\":0,\"build\":610,\"majorRevision\":0,\"minorRevision\":0,\"revision\":0}},\"createdByClientVersion\":{{\"major\":2,\"minor\":0,\"build\":610,\"majorRevision\":0,\"minorRevision\":0,\"revision\":0}},\"backgroundImageUri\":\"{backgroundImageUri}\",\"displayName\":\"{applicationName}\",\"environment\":{{\"id\":\"/providers/Microsoft.PowerApps/environments/{environmentId}\",\"name\":\"{environmentId}\"}}}},\"tags\":{{\"sienaVersion\":\"{GetNewPowerAppGuid()}\",\"deviceCapabilities\":\"\",\"supportsPortrait\":\"false\",\"supportsLandscape\":\"true\",\"primaryFormFactor\":\"Tablet\",\"primaryDeviceWidth\":\"1366\",\"primaryDeviceHeight\":\"768\",\"publisherVersion\":\"2.0.610\",\"minimumRequiredApiVersion\":\"2.1.0\"}},\"name\":\"{applicationId}\"}}");

            return(new ActionResponse(ActionStatus.Success, JsonUtility.GetEmptyJObject()));
        }
Beispiel #26
0
        public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request)
        {
            var azureToken       = request.DataStore.GetJson("AzureToken", "access_token");
            var subscription     = request.DataStore.GetJson("SelectedSubscription", "SubscriptionId");
            var resourceGroup    = request.DataStore.GetValue("SelectedResourceGroup");
            var location         = request.DataStore.GetJson("SelectedLocation", "Name");
            var functionFileName = request.DataStore.GetValue("FunctionFileName");
            var functionName     = request.DataStore.GetValue("FunctionName");

            var sitename = request.DataStore.GetValue("SiteName");

            List <string> appSettings = new List <string>();

            if (request.DataStore.GetJson("AppSettingKeys") != null && !string.IsNullOrEmpty(request.DataStore.GetJson("AppSettingKeys")[0].ToString()))
            {
                foreach (var item in request.DataStore.GetJson("AppSettingKeys"))
                {
                    string key = (string)item;
                    appSettings.Add(key);
                }
            }

            AzureHttpClient client = new AzureHttpClient(azureToken, subscription, resourceGroup);

            var function = System.IO.File.ReadAllText(Path.Combine(request.Info.App.AppFilePath, $"Service/Data/{functionFileName}"));
            var jsonBody =
                "{\"files\":{\"run.csx\":\"test\"},\"config\":" +
                "{\"" +
                "bindings\":" +
                "[" +
                "{\"name\":\"req\"," +
                "\"type\":\"httpTrigger\"," +
                "\"direction\":\"in\"," +
                "\"webHookType\":\"genericJson\"," +
                "\"scriptFile\":\"run.csx\"" +
                "}" +
                "]," +
                "\"disabled\":false}}";

            JObject jsonRequest = JsonUtility.GetJObjectFromJsonString(jsonBody);

            jsonRequest["files"]["run.csx"] = function;
            string stringRequest = JsonUtility.GetJsonStringFromObject(jsonRequest);

            var functionCreated = await client.ExecuteWebsiteAsync(HttpMethod.Put, sitename, $"/api/functions/{functionName}",
                                                                   stringRequest);

            string response = await functionCreated.Content.ReadAsStringAsync();

            if (!functionCreated.IsSuccessStatusCode)
            {
                return(new ActionResponse(ActionStatus.Failure, JsonUtility.GetJObjectFromJsonString(response),
                                          null, DefaultErrorCodes.DefaultErrorCode, "Error creating function"));
            }

            dynamic obj = new ExpandoObject();

            obj.subscriptionId       = subscription;
            obj.siteId               = new ExpandoObject();
            obj.siteId.Name          = sitename;
            obj.siteId.ResourceGroup = resourceGroup;
            obj.connectionStrings    = new ExpandoObject[appSettings.Count];
            if (appSettings.Count != 0)
            {
                for (int i = 0; i < appSettings.Count; i++)
                {
                    obj.connectionStrings[i] = new ExpandoObject();
                    obj.connectionStrings[i].ConnectionString = appSettings[i];
                    obj.connectionStrings[i].Name             = "connectionString" + i.ToString();
                    obj.connectionStrings[i].Type             = 2;
                }
            }
            obj.location = location;

            var appSettingCreated = await client.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Post, @"https://web1.appsvcux.ext.azure.com/websites/api/Websites/UpdateConfigConnectionStrings",
                                                                                      JsonUtility.GetJsonStringFromObject(obj));

            response = await appSettingCreated.Content.ReadAsStringAsync();

            if (!appSettingCreated.IsSuccessStatusCode)
            {
                return(new ActionResponse(ActionStatus.Failure, JsonUtility.GetJObjectFromJsonString(response),
                                          null, DefaultErrorCodes.DefaultErrorCode, "Error creating appsetting"));
            }

            var getFunction = await client.ExecuteWithSubscriptionAndResourceGroupAsync(HttpMethod.Get,
                                                                                        $"/providers/Microsoft.Web/sites/{sitename}", "2015-08-01", string.Empty);

            response = await getFunction.Content.ReadAsStringAsync();

            if (!getFunction.IsSuccessStatusCode)
            {
                return(new ActionResponse(ActionStatus.Failure, JsonUtility.GetJObjectFromJsonString(response),
                                          null, DefaultErrorCodes.DefaultErrorCode, "Error creating appsetting"));
            }

            return(new ActionResponse(ActionStatus.Success, JsonUtility.GetEmptyJObject()));
        }
        public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request)
        {
            var    azureToken       = request.DataStore.GetJson("AzureToken", "access_token");
            var    subscription     = request.DataStore.GetJson("SelectedSubscription", "SubscriptionId");
            var    resourceGroup    = request.DataStore.GetValue("SelectedResourceGroup");
            var    location         = request.DataStore.GetJson("SelectedLocation", "Name");
            var    apiKey           = request.DataStore.GetValue("apiKey");
            var    subscriptionKey  = request.DataStore.GetValue("subscriptionKey");
            string connectionString = request.DataStore.GetValueAtIndex("SqlConnectionString", "SqlServerIndex");
            var    sitename         = request.DataStore.GetValue("FunctionName");

            List <string> appSettings = new List <string>();

            if (request.DataStore.GetJson("AppSettingKeys") != null && !string.IsNullOrEmpty(request.DataStore.GetJson("AppSettingKeys")[0].ToString()))
            {
                foreach (var item in request.DataStore.GetJson("AppSettingKeys"))
                {
                    string key = (string)item;
                    appSettings.Add(key);
                }
            }

            AzureHttpClient client = new AzureHttpClient(azureToken, subscription, resourceGroup);

            dynamic obj = new ExpandoObject();

            obj.subscriptionId       = subscription;
            obj.siteId               = new ExpandoObject();
            obj.siteId.Name          = sitename;
            obj.siteId.ResourceGroup = resourceGroup;
            obj.connectionStrings    = new ExpandoObject[3];
            obj.connectionStrings[0] = new ExpandoObject();
            obj.connectionStrings[0].ConnectionString = apiKey;
            obj.connectionStrings[0].Name             = "apiKey";
            obj.connectionStrings[0].Type             = 2;
            obj.connectionStrings[1] = new ExpandoObject();
            obj.connectionStrings[1].ConnectionString = subscriptionKey;
            obj.connectionStrings[1].Name             = "subscriptionKey";
            obj.connectionStrings[1].Type             = 2;

            obj.connectionStrings[2] = new ExpandoObject();
            obj.connectionStrings[2].ConnectionString = connectionString;
            obj.connectionStrings[2].Name             = "ConnectionString";
            obj.connectionStrings[2].Type             = 2;
            obj.location = location;


            var appSettingCreated = await client.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Post, @"https://web1.appsvcux.ext.azure.com/websites/api/Websites/UpdateConfigConnectionStrings",
                                                                                      JsonUtility.GetJsonStringFromObject(obj));

            string response = await appSettingCreated.Content.ReadAsStringAsync();

            if (!appSettingCreated.IsSuccessStatusCode)
            {
                return(new ActionResponse(ActionStatus.Failure, JsonUtility.GetJObjectFromJsonString(response),
                                          null, DefaultErrorCodes.DefaultErrorCode, "Error creating appsetting"));
            }

            var getFunction = await client.ExecuteWithSubscriptionAndResourceGroupAsync(HttpMethod.Get,
                                                                                        $"/providers/Microsoft.Web/sites/{sitename}", "2015-08-01", string.Empty);

            response = await getFunction.Content.ReadAsStringAsync();

            if (!getFunction.IsSuccessStatusCode)
            {
                return(new ActionResponse(ActionStatus.Failure, JsonUtility.GetJObjectFromJsonString(response),
                                          null, DefaultErrorCodes.DefaultErrorCode, "Error creating appsetting"));
            }

            return(new ActionResponse(ActionStatus.Success));
        }
Beispiel #28
0
        public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request)
        {
            var azureToken    = request.DataStore.GetJson("AzureToken")["access_token"].ToString();
            var subscription  = request.DataStore.GetJson("SelectedSubscription")["SubscriptionId"].ToString();
            var resourceGroup = request.DataStore.GetValue("SelectedResourceGroup");
            var location      = request.DataStore.GetJson("SelectedLocation")["Name"].ToString();

            var sitename            = request.DataStore.GetValue("SiteName");
            var sqlConnectionString = request.DataStore.GetValue("SqlConnectionString");
            var cognitiveServiceKey = request.DataStore.GetValue("CognitiveServiceKey");

            AzureHttpClient client = new AzureHttpClient(azureToken, subscription, resourceGroup);

            var functionCSharp = System.IO.File.ReadAllText(Path.Combine(request.Info.App.AppFilePath, "Service/Data/TweetFunctionCSharp.cs"));
            var jsonBody       =
                "{\"files\":{\"run.csx\":\"test\"},\"config\":" +
                "{\"" +
                "bindings\":" +
                "[" +
                "{\"name\":\"req\"," +
                "\"type\":\"httpTrigger\"," +
                "\"direction\":\"in\"," +
                "\"webHookType\":\"genericJson\"," +
                "\"scriptFile\":\"run.csx\"" +
                "}" +
                "]," +
                "\"disabled\":false}}";

            JObject jsonRequest = JsonUtility.GetJObjectFromJsonString(jsonBody);

            jsonRequest["files"]["run.csx"] = functionCSharp;
            string stringRequest = JsonUtility.GetJsonStringFromObject(jsonRequest);

            var functionCreated = await client.ExecuteWebsiteAsync(HttpMethod.Put, sitename, "/api/functions/TweetProcessingFunction",
                                                                   stringRequest);

            string response = await functionCreated.Content.ReadAsStringAsync();

            if (!functionCreated.IsSuccessStatusCode)
            {
                return(new ActionResponse(ActionStatus.Failure, JsonUtility.GetJObjectFromJsonString(response),
                                          null, DefaultErrorCodes.DefaultErrorCode, "Error creating function"));
            }

            dynamic obj = new ExpandoObject();

            obj.subscriptionId       = subscription;
            obj.siteId               = new ExpandoObject();
            obj.siteId.Name          = sitename;
            obj.siteId.ResourceGroup = resourceGroup;
            obj.connectionStrings    = new ExpandoObject[2];
            obj.connectionStrings[0] = new ExpandoObject();
            obj.connectionStrings[0].ConnectionString = sqlConnectionString;
            obj.connectionStrings[0].Name             = "connectionString";
            obj.connectionStrings[0].Type             = 2;
            obj.connectionStrings[1] = new ExpandoObject();
            obj.connectionStrings[1].ConnectionString = cognitiveServiceKey;
            obj.connectionStrings[1].Name             = "subscriptionKey";
            obj.connectionStrings[1].Type             = 2;
            obj.location = location;

            var appSettingCreated = await client.ExecuteGenericRequestWithHeaderAsync(HttpMethod.Post, @"https://web1.appsvcux.ext.azure.com/websites/api/Websites/UpdateConfigConnectionStrings",
                                                                                      JsonUtility.GetJsonStringFromObject(obj));

            response = await appSettingCreated.Content.ReadAsStringAsync();

            if (!appSettingCreated.IsSuccessStatusCode)
            {
                return(new ActionResponse(ActionStatus.Failure, JsonUtility.GetJObjectFromJsonString(response),
                                          null, DefaultErrorCodes.DefaultErrorCode, "Error creating appsetting"));
            }

            var getFunction = await client.ExecuteWithSubscriptionAndResourceGroupAsync(HttpMethod.Get,
                                                                                        $"/providers/Microsoft.Web/sites/{sitename}", "2015-08-01", string.Empty);

            response = await getFunction.Content.ReadAsStringAsync();

            if (!getFunction.IsSuccessStatusCode)
            {
                return(new ActionResponse(ActionStatus.Failure, JsonUtility.GetJObjectFromJsonString(response),
                                          null, DefaultErrorCodes.DefaultErrorCode, "Error creating appsetting"));
            }

            return(new ActionResponse(ActionStatus.Success, JsonUtility.GetEmptyJObject()));
        }