示例#1
0
        /// <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);
            }
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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);
        }
示例#4
0
        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();
        }
示例#6
0
 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));
 }