Esempio n. 1
0
 public (String, int, DateTime) parseConfiguration(Moesif.Api.Http.Response.HttpStringResponse config, ILogger logger)
 {
     // Parse configuration object and return Etag, sample rate and last updated time
     try
     {
         var rspBody = ApiHelper.JsonDeserialize <Dictionary <string, object> >(config.Body);
         return(config.Headers.ToDictionary(k => k.Key.ToLower(), k => k.Value)["x-moesif-config-etag"], Int32.Parse(rspBody["sample_rate"].ToString()), DateTime.UtcNow);
     }
     catch (Exception ex)
     {
         logger.LogError("Error while parsing the configuration, setting the sample rate to default. " + ex.Message);
         return(null, 100, DateTime.UtcNow);
     }
 }
 private void ScheduleWorkerToFetchConfig()
 {
     try {
         new Thread(async() =>
         {
             Thread.CurrentThread.IsBackground = true;
             lastWorkerRun = DateTime.UtcNow;
             // Get Application config
             config = await appConfig.getConfig(_MoesifClient, _Logger);
             if (!string.IsNullOrWhiteSpace(config.ToString()))
             {
                 (configETag, samplingPercentage, lastUpdatedTime) = appConfig.parseConfiguration(config, _Logger);
             }
         }).Start();
     } catch (Exception ex) {
         _Logger.LogError("Error while parsing application configuration on initialization - " + ex.ToString());
     }
 }
Esempio n. 3
0
        public async Task <(Moesif.Api.Http.Response.HttpStringResponse, string, int, DateTime)> GetAppConfig(string configETag, int samplingPercentage, DateTime lastUpdatedTime, MoesifApiClient client, ILogger logger)
        {
            Moesif.Api.Http.Response.HttpStringResponse config = null;
            try
            {
                // Get Application config
                config = await getConfig(client, logger);

                if (!string.IsNullOrEmpty(config.ToString()))
                {
                    (configETag, samplingPercentage, lastUpdatedTime) = parseConfiguration(config, logger);
                }
            }
            catch (Exception ex)
            {
                logger.LogError("Error while parsing application configuration " + ex.Message);
            }
            return(config, configETag, samplingPercentage, lastUpdatedTime);
        }
Esempio n. 4
0
        public int getSamplingPercentage(Moesif.Api.Http.Response.HttpStringResponse config, string userId, string companyId)
        {
            // Get sampling percentage
            if (config == null)
            {
                return(100);
            }

            var userDefaultRate = new object();

            var companyDefaultRate = new object();

            var defaultRate = new object();

            var configBody = ApiHelper.JsonDeserialize <Dictionary <string, object> >(config.Body);

            Dictionary <string, object> userSampleRate = configBody.TryGetValue("user_sample_rate", out userDefaultRate)
                ? ApiHelper.JsonDeserialize <Dictionary <string, object> >(userDefaultRate.ToString())
                : null;

            Dictionary <string, object> companySampleRate = configBody.TryGetValue("company_sample_rate", out companyDefaultRate)
                ? ApiHelper.JsonDeserialize <Dictionary <string, object> >(companyDefaultRate.ToString())
                : null;

            if (userSampleRate != null && !string.IsNullOrWhiteSpace(userId) && userSampleRate.Count > 0 && userSampleRate.ContainsKey(userId))
            {
                return(Int32.Parse(userSampleRate[userId].ToString()));
            }

            if (companySampleRate != null && !string.IsNullOrWhiteSpace(companyId) && companySampleRate.Count > 0 && companySampleRate.ContainsKey(companyId))
            {
                return(Int32.Parse(companySampleRate[companyId].ToString()));
            }

            return(configBody.TryGetValue("sample_rate", out defaultRate) ? Int32.Parse(defaultRate.ToString()) : 100);
        }