Ejemplo n.º 1
0
        private dynamic OnFriendRequestReply(dynamic arg)
        {
            var helper       = new SerializeHelper();
            var requestReply = helper.DeserializeObject <FriendRequestReply>(Request.Body);

            $"Got a friend request reply from { requestReply.Request.TargetAccount.Name } to { requestReply.Request.RequesterAccount.Name }"
            .WriteToConsole();

            Guid        senderId   = requestReply.Id;
            SessionAuth clientAuth = Request.Headers.GetSessionAuth();

            if (!AccountStateService.Instance.IsAuthorized(senderId, clientAuth.ClientToken))
            {
                throw new ClientNotAuthorizedException(senderId);
            }

            AccountStateService  stateService         = AccountStateService.Instance;
            UserInformerService  informerService      = UserInformerService.Instance;
            FriendRequestService friendRequestService = FriendRequestService.Instance;

            ComplexFriendRequest processedRequest = friendRequestService.ReplyToRequest(requestReply);

            Task.Run(() =>
            {
                informerService.NotifyUserAboutFriendReply(requestReply.Request.RequesterAccount.Id, requestReply);
            });

            requestReply.EstablishedDate = processedRequest.DecisionDate;
            var serialized = helper.Serialize(requestReply);

            return(serialized);
        }
Ejemplo n.º 2
0
        private dynamic OnSearchFriendRequestRequest(dynamic arg)
        {
            var          searchRequest = new SerializeHelper().DeserializeObject <SearchRequest>(Request.Body);
            SearchEntity searchEntity  = searchRequest.Entity;

            if (searchEntity != SearchEntity.IncomingFriendRequests &&
                searchEntity != SearchEntity.OutgoingFriendRequests)
            {
                throw new InvalidOperationException($"Search entity '{ searchEntity }' must not be sent to this controller");
            }

            AccountStateService  stateService   = AccountStateService.Instance;
            FriendRequestService requestService = FriendRequestService.Instance;

            SessionAuth clientAuth = Request.Headers.GetSessionAuth();

            if (!stateService.IsAuthorized(searchRequest.SenderId, clientAuth.ClientToken))
            {
                throw new ClientNotAuthorizedException(searchRequest.SenderId);
            }

            IEnumerable <ComplexFriendRequest> requests =
                searchEntity == SearchEntity.IncomingFriendRequests ?
                requestService.GetIncomingRequests(searchRequest.SenderId) :
                requestService.GetOutgoingRequests(searchRequest.SenderId);

            IEnumerable <FriendRequest> clientModels = requests.Select(complexModel => complexModel.ToSimple());
            string serialized = new SerializeHelper().Serialize(clientModels);

            return(serialized);
        }