Exemple #1
0
        public static void LogInfo(FlagshipConfig config, string message, string tag)
        {
            try
            {
                if (config == null || config.LogManager == null || config.LogLevel < Enums.LogLevel.INFO)
                {
                    return;
                }

                config.LogManager.Info(message, tag);
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception.Message);
            }
        }
Exemple #2
0
 public ApiManager(FlagshipConfig config, HttpClient httpClient) : base(config, httpClient)
 {
 }
Exemple #3
0
        /// <summary>
        /// Start the Flagship SDK.
        /// </summary>
        /// <param name="envId">Environment id provided by Flagship.</param>
        /// <param name="apiKey">Api authentication key provided by Flagship.</param>
        /// <param name="config">Custom flagship configuration.</param>
        public static void Start(string envId, string apiKey, FlagshipConfig config = null)
        {
#if NET40 || NETSTANDARD2_0
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls;
#else
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
#endif

            if (config == null)
            {
                config = new DecisionApiConfig();
            }
            var fsInstance = GetInstance();

            fsInstance._config = config;

            if (config.LogManager == null)
            {
                config.LogManager = new FsLogManager();
            }

            if (string.IsNullOrWhiteSpace(envId) || string.IsNullOrWhiteSpace(apiKey))
            {
                fsInstance.SetStatus(FlagshipStatus.NOT_INITIALIZED);
                Log.LogError(config, Constants.INITIALIZATION_PARAM_ERROR, Constants.PROCESS_INITIALIZATION);
                return;
            }

            config.EnvId  = envId;
            config.ApiKey = apiKey;

            fsInstance.SetStatus(FlagshipStatus.STARTING);
            var httpClient = new HttpClient()
            {
                Timeout = config.Timeout ?? TimeSpan.FromMilliseconds(Constants.REQUEST_TIME_OUT)
            };

            IDecisionManager decisionManager = fsInstance._configManager?.DecisionManager;

            if (decisionManager != null && decisionManager is BucketingManager bucketingManager)
            {
                bucketingManager.StopPolling();
            }

            if (config.DecisionMode == DecisionMode.BUCKETING)
            {
                decisionManager = new BucketingManager((BucketingConfig)config, httpClient, Murmur.MurmurHash.Create32());
                _ = ((BucketingManager)decisionManager).StartPolling();
            }
            else
            {
                decisionManager = new ApiManager(config, httpClient);
            }

            var trackingManager = new TrackingManager(config, httpClient);

            decisionManager.StatusChange += DecisionManager_StatusChange;

            if (fsInstance._configManager == null)
            {
                fsInstance._configManager = new ConfigManager(config, decisionManager, trackingManager);
            }
            else
            {
                fsInstance._configManager.DecisionManager = decisionManager;
                fsInstance._configManager.TrackingManager = trackingManager;
            }

            fsInstance.SetStatus(FlagshipStatus.READY);
            Log.LogInfo(config, string.Format(Constants.SDK_STARTED_INFO, Constants.SDK_VERSION),
                        Constants.PROCESS_INITIALIZATION);
        }
Exemple #4
0
 public TrackingManager(FlagshipConfig config, HttpClient httpClient)
 {
     Config     = config;
     HttpClient = httpClient;
 }