public UserStateInfoResponse Get(HttpRequestMessage request)
        {
            long id;

            if (!_authenticationManager.TryAuthenticateForReadOperation(request.GetToken(), out id))
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Forbidden));
            }

            var queryTime = _nowProvider.Now;

            TimeWarpUserState state;

            if (!_userStateManager.TryGetCurrentState(id, queryTime, out state))
            {
                if (Log.IsDebugEnabled)
                {
                    Log.DebugFormat("no userState for account ({0}), returning default", id);
                }

                return(GetDefaultResponse(id, queryTime));
            }

            return(state.ConvertToPublicV001(queryTime));
        }
Example #2
0
        public IEnumerable <UserStateInfoResponse> Get(int roomId)
        {
            var queryTime = _nowProvider.Now;

            var room = _rooms.GetRoom(roomId);

            if (room == null)
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NoContent));
            }

            var accounts = room.Users;

            var results = new List <UserStateInfoResponse>();

            foreach (var account in accounts)
            {
                var removalTimeSpan = account.AccountType == AccountType.Quick
                                          ? _roomRemovalPolicy.QuickUsers
                                          : _roomRemovalPolicy.StandardUsers;

                TimeWarpUserState state;
                if (_userStateManager.TryGetCurrentState(account.Id, queryTime, out state))
                {
                    if ((queryTime.Subtract(state.PeriodStartTime) < removalTimeSpan))
                    {
                        var publicObject = state.ConvertToPublicV001(queryTime);
                        results.Add(publicObject);
                    }
                }
            }

            return(results);
        }