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)); }
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")); }
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)); }
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)); }
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")); }
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)); }
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)); }
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)); }
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)); }
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())); }
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)); }
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())); }