Exemple #1
0
        private static async Task <StartupResponse> GetStartupAsync()
        {
            try
            {
                Uri    baseUri = new Uri(Config.Global.CustomStartupUrl ?? "https://startup.mobile.yandex.net/");
                string str1    = "analytics/startup?query_hosts=1&".GlueGetList(await ServiceData.GetStartupParameters(), true);
                if (Critical.GetUuid() != null)
                {
                    str1 = str1 + "&uuid=" + Critical.GetUuid();
                }
                Uri        requestUri = new Uri(baseUri, str1 + "&deviceid=" + Critical.GetDeviceId());
                HttpClient httpClient = new HttpClient();
                httpClient.DefaultRequestHeaders.Add("user-agent", ServiceData.UserAgent);
                httpClient.DefaultRequestHeaders.Add("Accept", "application/json");
                using (HttpResponseMessage response = await httpClient.GetAsync(requestUri, CancellationToken.None))
                {
                    if (!response.IsSuccessStatusCode)
                    {
                        string str2 = await response.Content.ReadAsStringAsync();

                        return((StartupResponse)null);
                    }
                    using (Stream stream = await response.Content.ReadAsStreamAsync())
                    {
                        StartupResponse startupResponse1 = stream == null ? (StartupResponse)null : new DataContractJsonSerializer(typeof(StartupResponse)).ReadObject(stream) as StartupResponse;
                        if (startupResponse1 == null)
                        {
                            return((StartupResponse)null);
                        }
                        StartupResponse startupResponse2 = startupResponse1;
                        DateTimeOffset? date             = response.Headers.Date;
                        DateTimeOffset? local            = date;
                        DateTime        dateTime         = local.HasValue ? local.GetValueOrDefault().DateTime : DateTime.UtcNow;
                        startupResponse2.ServerDateTime   = dateTime;
                        startupResponse1.ServerTimeOffset = startupResponse1.ServerDateTime.ToUniversalTime() - DateTime.UtcNow;
                        return(startupResponse1);
                    }
                }
            }
            catch (Exception)
            {
                return((StartupResponse)null);
            }
        }
 static ServiceData()
 {
     ServiceData.Expose();
 }
        private async void Postman()
        {
            LiteMetricaService liteMetricaService = this;
            int fails = 0;

            while (true)
            {
                await ServiceData.WaitExposeAsync();

                try
                {
                    liteMetricaService._tokenSource = new CancellationTokenSource();
                    lock (liteMetricaService.PauseLock)
                    {
                        if (!liteMetricaService.IsPaused)
                        {
                            liteMetricaService.ActiveSession.LastUpdateTimestamp = new ulong?(DateTime.UtcNow.ToUnixTime());
                        }
                    }
                    int num;
                    if (!liteMetricaService.ForceSend && liteMetricaService.ReportedEventsCount < Config.Global.FlushThresholdEventsCounts && liteMetricaService.LastFlushTime.HasValue)
                    {
                        DateTime utcNow           = DateTime.UtcNow;
                        DateTime?lastFlushTime    = liteMetricaService.LastFlushTime;
                        TimeSpan?nullable         = lastFlushTime.HasValue ? new TimeSpan?(utcNow - lastFlushTime.GetValueOrDefault()) : new TimeSpan?();
                        TimeSpan thresholdTimeout = Config.Global.FlushThresholdTimeout;
                        num = nullable.HasValue ? (nullable.GetValueOrDefault() > thresholdTimeout ? 1 : 0) : 0;
                    }
                    else
                    {
                        num = 1;
                    }
                    if (num != 0)
                    {
                        bool?nullable1 = await liteMetricaService.Refresh();

                        bool?nullable2 = liteMetricaService.Flush();
                        if (nullable2.HasValue && nullable2.Value)
                        {
                            liteMetricaService.LastFlushTime       = new DateTime?(DateTime.UtcNow);
                            liteMetricaService.ReportedEventsCount = 0;
                            liteMetricaService.ForceSend           = false;
                            fails = 0;
                        }
                        if (nullable2.HasValue)
                        {
                            liteMetricaService.Snapshot();
                        }
                        if (nullable2.HasValue && !nullable2.Value)
                        {
                            ++fails;
                        }
                        if (fails > 6)
                        {
                            fails = 6;
                        }
                        if (fails > 0)
                        {
                            await liteMetricaService.Wait(TimeSpan.FromSeconds(Math.Pow(2.0, (double)fails)));
                        }
                    }
                    await liteMetricaService.Wait(Config.Global.DispatchPeriod);
                }
                catch (Exception)
                {
                }
            }
        }