private static async Task AddGeneratedServiceCodeAsync( ConnectedServiceHandlerContext context, Project project, SalesforceConnectedServiceInstance salesforceInstance, GeneratedService generatedService) { string serviceDirectoryName = SalesforceConnectedServiceHandler.GetServiceDirectoryName(context, salesforceInstance.DesignerData.ServiceName); await GeneratedCodeHelper.AddGeneratedCodeAsync( context, project, "SalesforceService", serviceDirectoryName, (host) => SalesforceConnectedServiceHandler.GetServiceT4Sessions(host, generatedService), () => new SalesforceService(), (session) => "SalesforceService"); if (salesforceInstance.RuntimeAuthentication.AuthStrategy == AuthenticationStrategy.WebServerFlow) { await GeneratedCodeHelper.AddGeneratedCodeAsync( context, project, Constants.OAuthRedirectHandlerTypeName, serviceDirectoryName, (host) => SalesforceConnectedServiceHandler.GetServiceT4Sessions(host, generatedService), () => new SalesforceOAuthRedirectHandler(), (session) => Constants.OAuthRedirectHandlerTypeName); } }
private static async Task AddGeneratedObjectCodeAsync( ConnectedServiceHandlerContext context, Project project, SalesforceConnectedServiceInstance salesforceInstance, GeneratedService generatedService, string modelsHintPath) { await context.Logger.WriteMessageAsync(LoggerMessageCategory.Information, Resources.LogMessage_BuildingObjectModel); IEnumerable <GeneratedObject> generatedObjects = await CodeModelBuilder.BuildObjectModelAsync( salesforceInstance.SelectedObjects, salesforceInstance.DesignTimeAuthentication, generatedService, context.Logger); await context.Logger.WriteMessageAsync(LoggerMessageCategory.Information, Resources.LogMessage_AddingGeneratedCodeForObjects, generatedObjects.Count()); await GeneratedCodeHelper.AddGeneratedCodeAsync( context, project, "SalesforceObject", modelsHintPath, (host) => SalesforceConnectedServiceHandler.GetObjectT4Sessions(host, generatedObjects), () => new SalesforceObject(), (session) => ((GeneratedObject)session["generatedObject"]).Model.Name); }
public async override Task <AddServiceInstanceResult> AddServiceInstanceAsync(ConnectedServiceHandlerContext context, CancellationToken ct) { AddServiceInstanceResult result = new AddServiceInstanceResult( Resources.ConnectedServiceProjectFolderName, new Uri(Resources.MoreInfoUrl)); Project = ProjectHelper.GetProjectFromHierarchy(context.ProjectHierarchy); string projectNamespace = Project.Properties.Item("DefaultNamespace").Value.ToString(); // get the collection of keys to be added var receiverSecrets = context.ServiceInstance.Metadata[Constants.MetadataKeyForStoringReceiverSecrets] as IEnumerable <WebHookReceiverSecret>; // install all of the base WebHook NuGets await context.Logger.WriteMessageAsync(LoggerMessageCategory.Information, Resources.LogMessageGettingCoreNuGets); InstallPackage("Microsoft.AspNet.WebApi.WebHost", "5.2.3"); InstallPackage("Microsoft.AspNet.WebHooks.Common", "1.2.0-beta3a"); InstallPackage("Microsoft.AspNet.WebHooks.Receivers", "1.2.0-beta3a"); // remember the list of providers selected List <string> providers = new List <string>(); using (EditableXmlConfigHelper configHelper = context.CreateEditableXmlConfigHelper()) { // iterate over the selected hook receivers foreach (var item in receiverSecrets) { // add the keys in the web.config for each provider configHelper.SetAppSetting(item.ReceiverSecretConfigSettingName, item.Secret); // pull in the NuGet for the receiver await context.Logger.WriteMessageAsync(LoggerMessageCategory.Information, string.Format(Resources.LogMessageGettingReceiver, item.Option.Name)); InstallPackage(item.Option.NuGetPackage, item.Option.NuGetVersionOverride); var classNamePrefix = ((string.IsNullOrEmpty(item.Option.ConfigWireupOverride)) ? item.Option.Name : item.Option.ConfigWireupOverride); var receiverName = ((string.IsNullOrEmpty(item.Option.ReceiverNameOverride)) ? classNamePrefix : item.Option.ReceiverNameOverride); var incomingType = ((string.IsNullOrEmpty(item.Option.IncomingTypeOverride)) ? "JObject" : item.Option.IncomingTypeOverride); // add the handler code to the project await GeneratedCodeHelper .GenerateCodeFromTemplateAndAddToProject( context, "WebHookHandler", string.Format($@"WebHookHandlers\{classNamePrefix}WebHookHandler.cs"), new Dictionary <string, object> { { "ns", projectNamespace }, { "classNamePrefix", classNamePrefix }, { "receiverName", receiverName }, { "incomingType", incomingType } }); // remember this provider providers.Add(classNamePrefix); // record the telemetry for the receiver TelemetryWrapper.RecordEvent($"{item.Option.Name}"); } // add the code to the project to configure all of the providers await GeneratedCodeHelper .GenerateCodeFromTemplateAndAddToProject( context, "WebHookConfig", string.Format($@"App_Start\WebHookConfig.cs"), new Dictionary <string, object> { { "ns", projectNamespace }, { "providers", providers.ToArray() } }); // persist the configuration changes configHelper.Save(); } // record that we finished TelemetryWrapper.RecordEvent("WebHook Experience Completed"); // return return(result); }