Ejemplo n.º 1
0
    public async Task InvokeAsync(
        HttpContext context,
        AspNetCoreTracker tracker,
        IOptions <GoogleAnalyticsTrackerOptions> optionsAccessor)
    {
        await _next(context);

        if (optionsAccessor.Value.ShouldTrackRequestInMiddleware == null ||
            optionsAccessor.Value.ShouldTrackRequestInMiddleware(context))
        {
            await tracker.TrackPageViewAsync();

            context.Items[TrackPageViewHandledMarker] = true;
        }
    }
    public static async Task <TrackingResult> TrackPageViewAsync(this AspNetCoreTracker tracker, HttpContext httpContext, string pageTitle, string?pageUrl = null)
    {
        pageUrl ??= httpContext.Request.Path;

        var pageViewParameters = new PageView
        {
            DocumentTitle       = pageTitle,
            DocumentLocationUrl = pageUrl,
            UserAgent           = httpContext.Request.Headers[HeaderNames.UserAgent].ToString(),
            DocumentHostName    = httpContext.Request.Host.Value,
            UserLanguage        = httpContext.Request.Headers[HeaderNames.AcceptLanguage].ToString().ToLower(),
            IpOverride          = httpContext.Connection.RemoteIpAddress?.ToString()
        };

        return(await tracker.TrackAsync(pageViewParameters));
    }
    public static async Task <TrackingResult> TrackUserTimingAsync(this AspNetCoreTracker tracker, HttpContext httpContext, string pageTitle, string pageUrl, string category, string var, long value, string?label = null)
    {
        var userTimingParameters = new UserTimings
        {
            DocumentTitle       = pageTitle,
            DocumentLocationUrl = pageUrl,
            UserAgent           = httpContext.Request.Headers[HeaderNames.UserAgent].ToString(),
            DocumentHostName    = httpContext.Request.Host.Value,
            UserLanguage        = httpContext.Request.Headers[HeaderNames.AcceptLanguage].ToString().ToLower(),
            UserTimingCategory  = category,
            UserTimingVariable  = var,
            UserTimingTime      = value,
            UserTimingLabel     = label
        };

        return(await tracker.TrackAsync(userTimingParameters));
    }