コード例 #1
0
        public static FriendRequestResponse[] ToResponse(this FriendRequest[] friendRequests)
        {
            List <FriendRequestResponse> responses = new List <FriendRequestResponse>();

            foreach (FriendRequest friendRequest in friendRequests)
            {
                responses.Add(FriendRequestResponse.FromFriendRequest(friendRequest));
            }

            return(responses.ToArray());
        }
コード例 #2
0
        protected void Response(PacketHeader header, Connection connection, FriendRequestResponse response)
        {
            if (server.accountManager.GetUser(response.userID) != null)
            {
                ConnectedUser senderUser        = server.GetConnectedUser(connection);
                ContactList   senderContactList = senderUser.contactList;

                ConnectedUser requesterUser = null;

                Connection connectionRequesterUser = server.GetConnectionFromUserID(response.userID);
                if (connectionRequesterUser == null)
                {
                    requesterUser = new ConnectedUser(server.accountManager.GetUser(response.userID), new ContactList(
                                                          server.accountManager.GetContacts(response.userID)));
                }
                else
                {
                    requesterUser = server.GetConnectedUser(connectionRequesterUser);
                }

                if (response.responseCode == (int)FriendRequestResponseCode.accept)
                {
                    senderUser.contactList.AddNewUser(requesterUser.user.id, false, true);
                    requesterUser.contactList.SetUserAccepted(senderUser.user.id, true);

                    server.accountManager.SaveContactData(senderUser.user.id, senderUser.contactList.CreateData());
                }
                else
                {
                    requesterUser.contactList.RemoveUser(senderUser.user.id);
                }

                server.accountManager.SaveContactData(requesterUser.user.id, requesterUser.contactList.CreateData());
                server.accountManager.RemoveFriendRequest(requesterUser.user.id, senderUser.user.id);

                server.SendUsersContactList(connection, senderUser.user.id);

                if (connectionRequesterUser != null)
                {
                    server.SendUsersContactList(connectionRequesterUser, requesterUser.user.id);
                }
            }
        }
コード例 #3
0
        /// <summary>
        /// 处理加好友请求。
        /// </summary>
        /// <param name="httpApiClient">HTTP API 客户端。</param>
        /// <param name="request">上报的加好友请求。</param>
        /// <param name="response">响应。</param>
        /// <exception cref="ApiAccessException">网络错误等。</exception>
        /// <exception cref="ArgumentNullException">某个参数为 <c>null</c>。</exception>
        /// <returns>是否成功</returns>
        public static Task <bool> HandleFriendRequestAsync(this HttpApiClient httpApiClient, FriendRequest request, FriendRequestResponse response)
        {
            if (httpApiClient == null)
            {
                throw new ArgumentNullException(nameof(httpApiClient));
            }

            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            if (response == null)
            {
                throw new ArgumentNullException(nameof(response));
            }

            var data = JObject.FromObject(response);

            data["flag"] = request.Flag;
            return(httpApiClient.HandleFriendRequestInternalAsync(data));
        }