/// <summary> /// Optimizely constructor for managing Full Stack .NET projects. /// </summary> /// <param name="datafile">string JSON string representing the project</param> /// <param name="eventDispatcher">EventDispatcherInterface</param> /// <param name="logger">LoggerInterface</param> /// <param name="errorHandler">ErrorHandlerInterface</param> /// <param name="skipJsonValidation">boolean representing whether JSON schema validation needs to be performed</param> /// <param name="eventProcessor">EventProcessor</param> public Optimizely(string datafile, IEventDispatcher eventDispatcher = null, ILogger logger = null, IErrorHandler errorHandler = null, UserProfileService userProfileService = null, bool skipJsonValidation = false, EventProcessor eventProcessor = null) { try { InitializeComponents(eventDispatcher, logger, errorHandler, userProfileService, null, eventProcessor); if (ValidateInputs(datafile, skipJsonValidation)) { var config = DatafileProjectConfig.Create(datafile, Logger, ErrorHandler); ProjectConfigManager = new FallbackProjectConfigManager(config); } else { Logger.Log(LogLevel.ERROR, "Provided 'datafile' has invalid schema."); } } catch (Exception ex) { string error = String.Empty; if (ex.GetType() == typeof(ConfigParseException)) { error = ex.Message; } else { error = "Provided 'datafile' is in an invalid format. " + ex.Message; } Logger.Log(LogLevel.ERROR, error); ErrorHandler.HandleError(ex); } }
/// <summary> /// This will initialize the project, this includes loading the launchable file and checking if there is an update available /// </summary> private void Init() { ProjectConfigManager projectConfigManager = new ProjectConfigManager(_data); List <LaunchableJson> launchables = projectConfigManager.GetLaunchables(); B_OpenSite.Enabled = true; B_MainAction.Enabled = true; B_OpenFolder.Enabled = true; LV_Launchables.Visible = true; LV_Launchables.Enabled = true; PB_DownloadProgress.Visible = false; L_Progress.Visible = false; LV_Launchables.Items.Clear(); if (!Directory.Exists(_projectFolder)) { B_OpenFolder.Enabled = false; } if (launchables.Count == 0) { B_MainAction.Enabled = false; B_MainAction.Visible = false; if (projectConfigManager.Downloadable) { B_MainAction.Enabled = true; B_MainAction.Visible = true; B_MainAction.Text = "Download"; B_MainAction.Tag = ActionButtonMode.Download; LV_Launchables.Visible = false; LV_Launchables.Enabled = false; return; } } if (launchables.Count <= 1) { LV_Launchables.Visible = false; LV_Launchables.Enabled = false; } foreach (LaunchableJson launchable in launchables) { ListViewItem item = new ListViewItem(launchable.DisplayName) { Tag = launchable.Executable }; LV_Launchables.Items.Add(item); } if (B_MainAction.Enabled) { LV_Launchables.Items[0].Selected = true; } LV_Launchables.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); }
/// <summary> /// Initializes a new instance of the <see cref="T:OptimizelySDK.Optimizely"/> class. /// </summary> /// <param name="configManager">Config manager.</param> /// <param name="eventDispatcher">Event dispatcher.</param> /// <param name="logger">Logger.</param> /// <param name="errorHandler">Error handler.</param> /// <param name="userProfileService">User profile service.</param> /// <param name="eventProcessor">EventProcessor</param> public Optimizely(ProjectConfigManager configManager, NotificationCenter notificationCenter = null, IEventDispatcher eventDispatcher = null, ILogger logger = null, IErrorHandler errorHandler = null, UserProfileService userProfileService = null, EventProcessor eventProcessor = null) { ProjectConfigManager = configManager; InitializeComponents(eventDispatcher, logger, errorHandler, userProfileService, notificationCenter, eventProcessor); }
public void Dispose() { if (Disposed) { return; } Disposed = true; (ProjectConfigManager as IDisposable)?.Dispose(); (EventProcessor as IDisposable)?.Dispose(); ProjectConfigManager = null; }
/// <summary> /// This will create a a new updater for a project /// </summary> /// <param name="projectData">This is the dataset for the project to create an updater for</param> public ProjectUpdateManager(ProjectDataJson projectData) { _data = projectData; SettingsManager settingsManager = new SettingsManager(); _projectManager = new ProjectConfigManager(_data); settingsManager.Load(); _settings = settingsManager.Settings; _asyncUpdateProvider = new BackgroundWorker(); _asyncUpdateProvider.DoWork += AsyncProvider_DoAsyncUpdate; _asyncUpdateProvider.WorkerReportsProgress = true; _asyncUpdateProvider.ProgressChanged += AsyncUpdateProvider_UpdateStatusChanged; _asyncUpdateProvider.RunWorkerCompleted += AsyncUpdateProvider_UpdateCompleted; SetupProject(); }
public static Optimizely NewDefaultInstance(ProjectConfigManager configManager, NotificationCenter notificationCenter = null, IEventDispatcher eventDispatcher = null, IErrorHandler errorHandler = null, ILogger logger = null, UserProfileService userprofileService = null, EventProcessor eventProcessor = null) { return(new Optimizely(configManager, notificationCenter, eventDispatcher, logger, errorHandler, userprofileService, eventProcessor)); }