private static async Task AddGeneratedCodeAsync(ConnectedServiceHandlerContext context, Project project, SalesforceConnectedServiceInstance salesforceInstance) { await context.Logger.WriteMessageAsync(LoggerMessageCategory.Information, Resources.LogMessage_AddingGeneratedCode); string modelsHintPath = salesforceInstance.DesignerData.GetDefaultedModelsHintPath(); GeneratedService generatedService = new GeneratedService() { ServiceNamespace = SalesforceConnectedServiceHandler.GetServiceNamespace(project, salesforceInstance.DesignerData.ServiceName), ModelsNamespace = SalesforceConnectedServiceHandler.GetModelsNamespace(project, modelsHintPath), DefaultNamespace = ProjectHelper.GetProjectNamespace(project), AuthenticationStrategy = salesforceInstance.RuntimeAuthentication.AuthStrategy, ConfigurationKeyNames = new ConfigurationKeyNames(salesforceInstance.DesignerData.ServiceName), }; if (!context.IsUpdating) { await SalesforceConnectedServiceHandler.AddGeneratedServiceCodeAsync(context, project, salesforceInstance, generatedService); } if (salesforceInstance.SelectedObjects.Any()) { // Only set the ModelsHintPath in the case where objects are generated so that it is only added to // the ConnectedService.json when it is applicable. salesforceInstance.DesignerData.ModelsHintPath = modelsHintPath; await SalesforceConnectedServiceHandler.AddGeneratedObjectCodeAsync(context, project, salesforceInstance, generatedService, modelsHintPath); } }
private static async Task UpdateConfigFileAsync(ConnectedServiceHandlerContext context, Project project, SalesforceConnectedServiceInstance salesforceInstance) { await Shell.ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); // The EditableConfigHelper must run on the UI thread. await context.Logger.WriteMessageAsync(LoggerMessageCategory.Information, Resources.LogMessage_UpdatingConfigFile); using (EditableXmlConfigHelper configHelper = context.CreateEditableXmlConfigHelper()) { foreach (ConfigSetting configSetting in salesforceInstance.RuntimeAuthentication.GetConfigSettings(salesforceInstance.ConnectedAppName)) { configHelper.SetAppSetting( ConfigurationKeyNames.GetQualifiedKeyName(configSetting.Key, salesforceInstance.DesignerData.ServiceName), configSetting.Value == null ? string.Empty : configSetting.Value.ToString(), configSetting.Comment); } if (salesforceInstance.RuntimeAuthentication.AuthStrategy == AuthenticationStrategy.WebServerFlow) { string handlerName = Constants.OAuthRedirectHandlerNameFormat.FormatInvariantCulture(salesforceInstance.DesignerData.ServiceName); string qualifiedHandlerTypeName = SalesforceConnectedServiceHandler.GetServiceNamespace(project, salesforceInstance.DesignerData.ServiceName) + Type.Delimiter + Constants.OAuthRedirectHandlerTypeName; string redirectUri = ((WebServerFlowInfo)salesforceInstance.RuntimeAuthentication).RedirectUri.ToString(); configHelper.RegisterRedirectHandler(handlerName, redirectUri, qualifiedHandlerTypeName); } configHelper.Save(); } }