コード例 #1
0
        private static string BuildSort(string field, bool descending = false)
        {
            if (string.IsNullOrWhiteSpace(field))
            {
                throw new ArgumentNullException("field", "sort field must be specified, see GaMetadata");
            }

            return(string.Format("{0}{1}", descending ? "-" : "", GaMetadata.WithPrefix(field)));
        }
        private DataResource.RealtimeResource.GetRequest AnalyticsRequest(Google.Apis.Analytics.v3.AnalyticsService service, IGoogleAnalyticsRequestConfiguration requestConfig)
        {
            var metrics    = string.Join(",", requestConfig.Metrics.Select(GaMetadata.WithRealtimePrefix));
            var dimensions = string.Join(",", requestConfig.Dimensions.Select(GaMetadata.WithRealtimePrefix));

            var gRequest = service.Data.Realtime.Get(
                GaMetadata.WithPrefix(requestConfig.ProfileId),
                metrics);

            gRequest.Dimensions = dimensions == "" ? null : dimensions;
            gRequest.MaxResults = requestConfig.MaxResults;
            gRequest.Filters    = requestConfig.Filter;
            gRequest.Sort       = requestConfig.Sort;

            return(gRequest);
        }
コード例 #3
0
        private static string BuildFilter(string field, string @operator, string value)
        {
            if (string.IsNullOrWhiteSpace(field))
            {
                throw new ArgumentNullException("field", "filter field must be specified, see GaMetadata");
            }
            if (string.IsNullOrWhiteSpace(@operator))
            {
                throw new ArgumentNullException("@operator", "filter operator must be specified, see GaMetadata.FilterOperator");
            }
            if (string.IsNullOrWhiteSpace(value))
            {
                throw new ArgumentNullException("value", "filter value must be specified");
            }

            return(string.Format("{0}{1}{2}", GaMetadata.WithPrefix(field), @operator, value));
        }
コード例 #4
0
        private DataResource.GaResource.GetRequest AnalyticsRequest(AnalyticsService service, IGoogleAnalyticsRequestConfiguration requestConfig)
        {
            var metrics    = string.Join(",", requestConfig.Metrics.Select(GaMetadata.WithPrefix));
            var dimensions = string.Join(",", requestConfig.Dimensions.Select(GaMetadata.WithPrefix));

            var gRequest = service.Data.Ga.Get(
                GaMetadata.WithPrefix(requestConfig.ProfileId),
                requestConfig.StartDate.ToString("yyyy-MM-dd"),
                requestConfig.EndDate.ToString("yyyy-MM-dd"),
                metrics);

            gRequest.Dimensions = dimensions;
            gRequest.MaxResults = requestConfig.MaxResults;
            gRequest.Filters    = requestConfig.Filter;
            gRequest.Sort       = requestConfig.Sort;
            gRequest.Segment    = requestConfig.Segment;

            return(gRequest);
        }
        private static Type GetDataType(RealtimeData.ColumnHeadersData gaColumn)
        {
            switch (gaColumn.DataType.ToLowerInvariant())
            {
            case "integer":
                return(typeof(int));

            case "double":
                return(typeof(double));

            case "currency":
                return(typeof(decimal));

            case "time":
                return(typeof(float));

            default:
                if (gaColumn.Name.ToLowerInvariant().Equals(GaMetadata.WithPrefix(GaMetadata.Dimensions.Time.Date)))
                {
                    return(typeof(DateTime));
                }
                return(typeof(string));
            }
        }
コード例 #6
0
 public IGoogleAnalyticsRequestConfigurerDateRange WithProfileId(string value)
 {
     ProfileId = GaMetadata.RemovePrefix(value);
     return(this);
 }
        private DataTable ToDataTable(RealtimeData response, string name = "GA")
        {
            var requestResultTable = new DataTable(name);

            if (response != null)
            {
                requestResultTable.Columns.AddRange(response.ColumnHeaders.Select(x => new DataColumn(GaMetadata.RemoveRealtimePrefix(x.Name), GetDataType(x))).ToArray());

                if (response.Rows != null)
                {
                    foreach (var row in response.Rows)
                    {
                        var dtRow = requestResultTable.NewRow();

                        for (var idx = 0; idx != requestResultTable.Columns.Count; idx++)
                        {
                            var col = requestResultTable.Columns[idx];
                            if (col.DataType == typeof(DateTime))
                            {
                                dtRow.SetField(col, DateTime.ParseExact(row[idx], "yyyyMMdd", new DateTimeFormatInfo(), DateTimeStyles.AssumeLocal));
                            }
                            else
                            {
                                dtRow.SetField(col, row[idx]);
                            }
                        }
                        requestResultTable.Rows.Add(dtRow);
                    }
                }
                requestResultTable.AcceptChanges();
            }
            return(requestResultTable);
        }