/// <summary> /// Load snapshot of today's metrics data /// </summary> /// <param name="metrics">Array of metric names to load</param> private void LoadToday(string[] metrics) { DateTime startDate = DateTime.Today; DateTime endDate = DateTime.Today.AddDays(1).AddSeconds(-1); todayData = GetAnalyticsData(null, metrics, startDate, endDate); }
public AnalyticDataPoint GetAnalyticsData(string profileId, string[] demensions, string[] metrics, DateTime startDate, DateTime endDate) { AnalyticDataPoint data = new AnalyticDataPoint(); if (!profileId.Contains("ga:")) { profileId = string.Format("ga:{0}", profileId); } //Make initial call to service. //Then check if a next link exists in the response, //if so parse and call again using start index param. GaData response = null; do { int startIndex = 1; if (response != null && !string.IsNullOrEmpty(response.NextLink)) { Uri uri = new Uri(response.NextLink); var paramerters = uri.Query.Split('&'); string s = paramerters.First(i => i.Contains("start-index")).Split('=')[1]; startIndex = int.Parse(s); } var request = BuildAnalyticRequest(profileId, demensions, metrics, startDate, endDate, startIndex); response = request.Execute(); data.ColumnHeaders = response.ColumnHeaders; data.Rows.AddRange(response.Rows); } while (!string.IsNullOrEmpty(response.NextLink)); return(data); }
/// <summary> /// Load historical metrics data for a specified timeframe /// </summary> /// <param name="numberOfDays">Number of days to load</param> /// <param name="metrics">Array of metrics to load</param> public void LoadHistoricalData(int numberOfDays, string[] metrics) { DateTime startDate = DateTime.Today.AddDays(-numberOfDays); DateTime endDate = DateTime.Today.AddSeconds(-1); historicalData = GetAnalyticsData(null, metrics, startDate, endDate); historyDays = numberOfDays; }
public AnalyticDataPoint GetAnalyticsData(string[] dimensions, string[] metrics, DateTime startDate, DateTime endDate) { AnalyticDataPoint data = new AnalyticDataPoint(); //Make initial call to service. //Then check if a next link exists in the response, //if so parse and call again using start index param. GaData response = null; do { int startIndex = 1; if (response != null && !string.IsNullOrEmpty(response.NextLink)) { Uri uri = new Uri(response.NextLink); var paramerters = uri.Query.Split('&'); string s = paramerters.First(i => i.Contains("start-index")).Split('=')[1]; startIndex = int.Parse(s); } try { var request = BuildAnalyticRequest(ProfileID, dimensions, metrics, startDate, endDate, startIndex); response = request.Execute(); } catch (Google.GoogleApiException exception) { Debug.WriteLine(exception.Error.Message); MetricsErrorEvent(exception.Error.Message); } data.ColumnHeaders = response.ColumnHeaders; data.Rows.AddRange(response.Rows); } while (!string.IsNullOrEmpty(response.NextLink)); return(data); }