private async Task <CachedGaTraffic> GetTrafficAsync(string clientId)
        {
            var traffic = await _trafficRepository.GetAsync(clientId);

            return(traffic == null
                ? new CachedGaTraffic(GaTraffic.CreateDefault(clientId))
                : new CachedGaTraffic(traffic));
        }
        public async Task <GaTraffic> GetGaUserTrafficAsync(string clientId)
        {
            var cachedValue = await _cache.TryGetOrAddAsync(
                GetTrafficKey(clientId), async() => await GetTrafficAsync(clientId));

            return(cachedValue == null
                ? GaTraffic.CreateDefault(clientId)
                : new GaTraffic
            {
                ClientId = cachedValue.ClientId,
                Source = cachedValue.Source,
                Medium = cachedValue.Medium,
                Campaign = cachedValue.Campaign,
                Keyword = cachedValue.Keyword,
                Content = cachedValue.Content
            });
        }