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) { } } }