public async Task <FriendsPageModel> GetFriendsAsync(FriendsPageFilter filter) { var channel = new Channel(channelTarget, ChannelCredentials.Insecure); try { var client = new FriendsGrpcService.FriendsGrpcServiceClient(channel); var request = new GetFriendsRequest() { UserId = filter.UserId.ToString(), PageIndex = filter.PageIndex, PageSize = filter.PageSize }; var response = await client.GetFriendsAsync(request); return(new FriendsPageModel() { TotalNumber = response.TotalNumber, Friends = response.Friends.Select(f => FriendGrpcConverter.ToModel(f)).ToList() }); } finally { await channel.ShutdownAsync(); } }
private void updateSearch() { queryChangedDebounce?.Cancel(); if (!IsLoaded) { return; } Users = null; clearPanels(); loading.Hide(); getUsersRequest?.Cancel(); if (api?.IsLoggedIn != true) { return; } switch (Header.Tabs.Current.Value) { case SocialTab.Friends: var friendRequest = new GetFriendsRequest(); // TODO filter arguments? friendRequest.Success += updateUsers; api.Queue(getUsersRequest = friendRequest); break; default: var userRequest = new GetUsersRequest(); // TODO filter arguments! userRequest.Success += response => updateUsers(response.Select(r => r.User)); api.Queue(getUsersRequest = userRequest); break; } loading.Show(); }
public async Task <BaseResponse <IEnumerable <UserInfo> > > GetFriends([FromQuery] GetFriendsRequest request) { return(new BaseSuccessResponse <IEnumerable <UserInfo> > { Data = await _userSource.GetUserFriends(request.UserId) }); }
public GetFriendsResponse GetFriends(GetFriendsRequest request) { var returnValue = new GetFriendsResponse(); returnValue.Friends = _friendSqlClient.GetFriends(); return(returnValue); }
/// <summary> /// Подгружает следующую порцию элементов. /// </summary> /// <param name="count">Количество элементов, которое необходимо подгрузить.</param> public IAsyncOperation <LoadMoreItemsResult> LoadMoreItemsAsync(uint count) { return(Task.Run(async() => { HasMoreItems = false; State = ContentState.Loading; uint resultCount = 0; if (count < 10) { count = 50; } else if (count > 6000) { count = 6000; } var request = new GetFriendsRequest() { Count = count, Offset = _count, UserID = _userID }; var response = await request.ExecuteAsync(); await CoreHelper.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { if (response.Error.ErrorType == VKErrors.None) { _totalCount = response.Response.Count; resultCount = (uint)response.Response.Items.Count; for (int i = 0; i < response.Response.Items.Count; i++) { Add(response.Response.Items[i]); } _count += count; if (Count > 0) { State = ContentState.Normal; HasMoreItems = _count < _totalCount; } else { State = ContentState.NoData; } } else { State = ContentState.Error; } }); return new LoadMoreItemsResult { Count = resultCount }; }).AsAsyncOperation()); }
public static GetFriendsReply GetFriends() { ILJGetFriends getFriendsProxy = CreateProxy <ILJGetFriends>(); GetFriendsRequest request = new GetFriendsRequest(true, true); request.PopulateWithLoginInfo(); GetFriendsReply reply = getFriendsProxy.GetFriends(request); reply.PostProcess(); return(reply); }
static void Main() { var accessToken = GetAccessToken(); var client = new RenrenClient(CONSUMER_KEY, CONSUMER_SECRET, accessToken); var gfr = new GetFriendsRequest(); var friends = client.Query <List <FriendInfoEntity> >(gfr); foreach (var f in friends) { Console.WriteLine(f.Name); } }
static void Main() { var accessToken = GetAccessToken(); var client = new RenrenClient(CONSUMER_KEY, CONSUMER_SECRET, accessToken); var gfr = new GetFriendsRequest(); var friends = client.Query<List<FriendInfoEntity>>(gfr); foreach (var f in friends) { Console.WriteLine(f.Name); } }
private void MainForm_Load(object sender, EventArgs e) { if (GlobalResourceManager.CurrentUser == null) { MessageBoxEx.Show("请先登录"); new LoginForm().ShowDialog(); return; } // 启动心跳线程 ThreadPool.QueueUserWorkItem(HeartbeatThread, null); ProtocolDecoder.Singleton.OnGetFriendsResponse += OnGetFriendsResponse; ProtocolDecoder.Singleton.OnChangeStatusNotice += OnChangeStatusNotice; ProtocolDecoder.Singleton.OnFriendChatNotice += OnFriendChatNotice; ChatListItem itemFriend = new ChatListItem("我的好友"); chatListBox1.Items.Add(itemFriend); itemFriend.IsOpen = true; User user = new User(); user.UserID = "SystemGroupChat"; user.NickName = "群聊"; user.Signature = "一起来聊天吧!"; AppendUserToList(user); labelName.Text = GlobalResourceManager.CurrentUser.NickName; labelSignature.Text = GlobalResourceManager.CurrentUser.Signature; // 下载头像 String headFile = Path.Combine(GlobalResourceManager.AppPath, GlobalResourceManager.CurrentUser.UserID, "res", "head.jpg"); Utils.DownFile(GlobalResourceManager.CurrentUser.HeadImageUrl, headFile); if (File.Exists(headFile)) { skinButton_headImage.Image = Image.FromFile(headFile); } AppendUserToList(GlobalResourceManager.CurrentUser); GetFriendsRequest getFriendsRequest = new GetFriendsRequest(); getFriendsRequest.UserID = GlobalResourceManager.CurrentUser.UserID; TCPClient.Singleton.SendProtoMessage(CMD.GetFriendsRequestCMD, getFriendsRequest); }
public override Task <GetFriendsResponse> GetFriends(GetFriendsRequest request, ServerCallContext context) { var filter = new FriendsPageFilter() { UserId = Guid.Parse(request.UserId), PageIndex = request.PageIndex, PageSize = request.PageSize }; var(totalNumber, friends) = _friendsService.GetFriends(filter); var response = new GetFriendsResponse() { TotalNumber = totalNumber }; response.Friends.AddRange(friends.Select(f => FriendGrpcConverter.ToMessage(f)).ToList()); return(Task.FromResult(response)); }
public async Task <List <FriendInfo> > GetFriendsAsync(string socialNetwork, ApiOptions options = null) { if (string.IsNullOrWhiteSpace(socialNetwork) == true) { throw new AppacitiveRuntimeException("Social network cannot be null or empty."); } var request = new GetFriendsRequest { UserId = this.Id, SocialNetwork = socialNetwork }; ApiOptions.Apply(request, options); var response = await request.ExecuteAsync(); if (response.Status.IsSuccessful == false) { throw response.Status.ToFault(); } return(response.Friends); }
private void run() { while (!cancellationToken.IsCancellationRequested) { switch (State.Value) { case APIState.Failing: //todo: replace this with a ping request. log.Add(@"In a failing state, waiting a bit before we try again..."); Thread.Sleep(5000); if (!IsLoggedIn) { goto case APIState.Connecting; } if (queue.Count == 0) { log.Add(@"Queueing a ping request"); Queue(new GetUserRequest()); } break; case APIState.Offline: case APIState.Connecting: // work to restore a connection... if (!HasLogin) { state.Value = APIState.Offline; Thread.Sleep(50); continue; } state.Value = APIState.Connecting; // save the username at this point, if the user requested for it to be. config.Set(OsuSetting.Username, config.Get <bool>(OsuSetting.SaveUsername) ? ProvidedUsername : string.Empty); if (!authentication.HasValidAccessToken && !authentication.AuthenticateWithLogin(ProvidedUsername, password)) { //todo: this fails even on network-related issues. we should probably handle those differently. //NotificationOverlay.ShowMessage("Login failed!"); log.Add(@"Login failed!"); password = null; authentication.Clear(); continue; } var userReq = new GetUserRequest(); userReq.Success += u => { localUser.Value = u; // todo: save/pull from settings localUser.Value.Status.Value = new UserStatusOnline(); failureCount = 0; }; if (!handleRequest(userReq)) { failConnectionProcess(); continue; } // getting user's friends is considered part of the connection process. var friendsReq = new GetFriendsRequest(); friendsReq.Success += res => { friends.AddRange(res); //we're connected! state.Value = APIState.Online; }; if (!handleRequest(friendsReq)) { failConnectionProcess(); continue; } // The Success callback event is fired on the main thread, so we should wait for that to run before proceeding. // Without this, we will end up circulating this Connecting loop multiple times and queueing up many web requests // before actually going online. while (State.Value > APIState.Offline && State.Value < APIState.Online) { Thread.Sleep(500); } break; } // hard bail if we can't get a valid access token. if (authentication.RequestAccessToken() == null) { Logout(); continue; } while (true) { APIRequest req; lock (queue) { if (queue.Count == 0) { break; } req = queue.Dequeue(); } handleRequest(req); } Thread.Sleep(50); } void failConnectionProcess() { // if something went wrong during the connection process, we want to reset the state (but only if still connecting). if (State.Value == APIState.Connecting) { state.Value = APIState.Failing; } } }
public async Task<List<FriendInfo>> GetFriendsAsync(string socialNetwork, ApiOptions options = null) { if (string.IsNullOrWhiteSpace(socialNetwork) == true) throw new AppacitiveRuntimeException("Social network cannot be null or empty."); var request = new GetFriendsRequest { UserId = this.Id, SocialNetwork = socialNetwork }; ApiOptions.Apply(request, options); var response = await request.ExecuteAsync(); if (response.Status.IsSuccessful == false) throw response.Status.ToFault(); return response.Friends; }