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()); }
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); } } }
/// <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)); }