private async Task <CachedGaUserId> GetCachedUserIdAsync(string clientId, string cid = null)
        {
            var cachedGaUserId = new CachedGaUserId();
            var trackerUser    = await _trackerUserRepository.GetGaUserAsync(clientId);

            if (trackerUser == null)
            {
                var gaUser = GaUser.CreateNew(clientId, cid);

                await _trackerUserRepository.AddAsync(gaUser);

                cachedGaUserId.GaUserId = gaUser.TrackerUserId;
                cachedGaUserId.GaCid    = gaUser.Cid;
            }
            else
            {
                string userCid = trackerUser.Cid;

                if (string.IsNullOrEmpty(userCid))
                {
                    userCid = string.IsNullOrEmpty(cid) ? GaUser.GenerateNewCid() : cid;

                    await _trackerUserRepository.AddAsync(new GaUser { ClientId = trackerUser.ClientId, Cid = userCid, TrackerUserId = trackerUser.TrackerUserId });
                }

                cachedGaUserId.GaUserId = trackerUser.TrackerUserId;
                cachedGaUserId.GaCid    = userCid;
            }

            return(cachedGaUserId);
        }
Example #2
0
        public async Task <IGaUser> GetGaUserAsync(string clientId)
        {
            var entity = await _tableStorage.GetDataAsync(GaUserEntity.GeneratePartitionKey(),
                                                          GaUserEntity.GenerateRowKey(clientId));

            return(entity != null?GaUser.Create(entity) : null);
        }
        public async Task AddGaUserAsync(string clientId, string cid)
        {
            var trackerUser = await _trackerUserRepository.GetGaUserAsync(clientId);

            var gaUser = new GaUser {
                ClientId = clientId
            };

            if (trackerUser == null)
            {
                gaUser.TrackerUserId = GaUser.GenerateNewUserId();
                gaUser.Cid           = cid;
            }
            else
            {
                gaUser.TrackerUserId = trackerUser.TrackerUserId;

                if (string.IsNullOrEmpty(trackerUser.Cid))
                {
                    gaUser.Cid = cid;
                }
            }

            await _trackerUserRepository.AddAsync(gaUser);

            var value = MessagePackSerializer.Serialize(new CachedGaUserId(gaUser.TrackerUserId, gaUser.Cid));
            await _cache.SetAsync(GetUserInfoKey(clientId), value);
        }
Example #4
0
        private async Task FillGaHitAsync(GaBaseHit model)
        {
            GaUser gaUser = await _gaUserService.GetGaUserAsync(model.UserId, model.Cid);

            model.UserId     = gaUser.TrackerUserId;
            model.Cid        = gaUser.Cid;
            model.TrackingId = _gaSettings.ApiKey;

            model.Traffic = await _gaUserService.GetGaUserTrafficAsync(gaUser.ClientId);

            var deviceInfo = new DeviceInfo();

            deviceInfo.ParseUserAgent(model.UserAgent);
            deviceInfo.ParseClientInfo(model.ClientInfo);

            model.UserAgent        = deviceInfo.GetUserAgentString();
            model.ScreenResolution = deviceInfo.ScreenResolution;
            model.AppVersion       = deviceInfo.AppVersion;
        }