Esempio n. 1
0
        public static AppOptions ReadFromConfiguration(IConfiguration config)
        {
            var options = new AppOptions();

            options.BaseURL                = config.GetValue <string>(nameof(options.BaseURL))?.TrimEnd('/');
            options.InternalProjectId      = config.GetValue(nameof(options.InternalProjectId), "54b56e480ef9605a88a13153");
            options.ExceptionlessApiKey    = config.GetValue <string>(nameof(options.ExceptionlessApiKey));
            options.ExceptionlessServerUrl = config.GetValue <string>(nameof(options.ExceptionlessServerUrl));

            options.AppMode            = config.GetValue(nameof(options.AppMode), AppMode.Production);
            options.AppScope           = config.GetValue(nameof(options.AppScope), options.AppMode.ToScope());
            options.RunJobsInProcess   = config.GetValue(nameof(options.RunJobsInProcess), options.AppMode == AppMode.Development);
            options.JobsIterationLimit = config.GetValue(nameof(options.JobsIterationLimit), -1);
            options.BotThrottleLimit   = config.GetValue(nameof(options.BotThrottleLimit), 25).NormalizeValue();

            options.ApiThrottleLimit        = config.GetValue(nameof(options.ApiThrottleLimit), options.AppMode == AppMode.Development ? Int32.MaxValue : 3500).NormalizeValue();
            options.EnableArchive           = config.GetValue(nameof(options.EnableArchive), true);
            options.EnableSampleData        = config.GetValue(nameof(options.EnableSampleData), options.AppMode != AppMode.Development);
            options.EventSubmissionDisabled = config.GetValue(nameof(options.EventSubmissionDisabled), false);
            options.DisabledPipelineActions = config.GetValueList(nameof(options.DisabledPipelineActions));
            options.DisabledPlugins         = config.GetValueList(nameof(options.DisabledPlugins));
            options.MaximumEventPostSize    = config.GetValue(nameof(options.MaximumEventPostSize), 200000).NormalizeValue();
            options.MaximumRetentionDays    = config.GetValue(nameof(options.MaximumRetentionDays), 180).NormalizeValue();

            options.GoogleGeocodingApiKey = config.GetValue <string>(nameof(options.GoogleGeocodingApiKey));
            options.MaxMindGeoIpKey       = config.GetValue <string>(nameof(options.MaxMindGeoIpKey));

            options.BulkBatchSize = config.GetValue(nameof(options.BulkBatchSize), 1000);

            options.EnableRepositoryNotifications = config.GetValue(nameof(options.EnableRepositoryNotifications), true);
            options.EnableWebSockets = config.GetValue(nameof(options.EnableWebSockets), true);

            try {
                var versionInfo = FileVersionInfo.GetVersionInfo(typeof(AppOptions).Assembly.Location);
                options.Version = versionInfo.FileVersion;
                options.InformationalVersion = versionInfo.ProductVersion;
            }
            catch { }

            options.CacheOptions         = CacheOptions.ReadFromConfiguration(config, options);
            options.MessageBusOptions    = MessageBusOptions.ReadFromConfiguration(config, options);
            options.MetricOptions        = MetricOptions.ReadFromConfiguration(config);
            options.QueueOptions         = QueueOptions.ReadFromConfiguration(config, options);
            options.StorageOptions       = StorageOptions.ReadFromConfiguration(config, options);
            options.EmailOptions         = EmailOptions.ReadFromConfiguration(config, options);
            options.ElasticsearchOptions = ElasticsearchOptions.ReadFromConfiguration(config, options);
            options.IntercomOptions      = IntercomOptions.ReadFromConfiguration(config);
            options.SlackOptions         = SlackOptions.ReadFromConfiguration(config);
            options.StripeOptions        = StripeOptions.ReadFromConfiguration(config);
            options.AuthOptions          = AuthOptions.ReadFromConfiguration(config);

            return(options);
        }