public async Task <List <VkProfile> > SearchHints(string q, int count = 9, string filters = null, bool searchGlobal = false, string fields = null) { var parameters = new Dictionary <string, string>(); parameters.Add("q", q); if (count != 0) { parameters.Add("limit", count.ToString()); } if (!string.IsNullOrEmpty(filters)) { parameters.Add("filters", filters); } parameters.Add("search_global", searchGlobal ? "1" : "0"); if (!string.IsNullOrWhiteSpace(fields)) { parameters.Add("fields", fields); } _vkontakte.SignMethod(parameters); var response = await VkRequest.GetAsync(VkConst.MethodBase + "execute.searchHints", parameters); if (response["response"] != null) { return(new List <VkProfile>(from u in response["response"] select VkProfile.FromJson(u))); } return(new List <VkProfile>()); }
public static VkConversation FromJson(JToken json, string apiVersion = null) { if (json == null) { throw new Exception("Json can't be null"); } var result = new VkConversation(); if (json["id"] != null) { result.Id = (long)json["id"]; } if (json["title"] != null) { result.Title = (string)json["title"]; } if (json["admin_id"] != null) { result.AdminId = (long)json["admin_id"]; } if (json["users"] != null) { result.Users = (from u in json["users"] select VkProfile.FromJson(u)).ToList(); } return(result); }
public async Task <VkNewsResponse> Get(string sourceIds = null, string filters = null, int count = 0, string startFrom = null) { var parameters = new Dictionary <string, string>(); if (!string.IsNullOrEmpty(sourceIds)) { parameters.Add("source_ids", sourceIds); } if (!string.IsNullOrEmpty(filters)) { parameters.Add("filters", filters); } if (count > 0) { parameters.Add("count", count.ToString()); } if (!string.IsNullOrEmpty(startFrom)) { parameters.Add("start_from", startFrom); } _vkontakte.SignMethod(parameters); var response = await VkRequest.GetAsync(VkConst.MethodBase + "newsfeed.get", parameters); if (response.SelectToken("response.items") != null) { var result = new VkNewsResponse((from n in response["response"]["items"] select VkNewsEntry.FromJson(n)).ToList()); if (response["response"]["profiles"] != null) { var users = (from n in response["response"]["profiles"] select VkProfile.FromJson(n)).ToList(); foreach (var entry in result.Items) { entry.Author = users.FirstOrDefault(u => u.Id == entry.SourceId); } } if (response["response"]["groups"] != null) { var groups = (from n in response["response"]["groups"] select VkGroup.FromJson(n)).ToList(); foreach (var entry in result.Items.Where(e => e.Author == null)) { entry.Author = groups.FirstOrDefault(g => g.Id == Math.Abs(entry.SourceId)); } } if (response["response"]["next_from"] != null) { result.NextFrom = response["response"]["next_from"].Value <string>(); } return(result); } return(null); }
public async Task <UserProfile> GetUserProfileByUserId(string userId) { UserProfile userProfile; string[] uids = new string[1]; uids[0] = userId; if (ViewModelLocator.AuthService.IsLoggedInVk(true)) { IEnumerable <VkProfile> vkProfiles = await this._vkontakte.Users.Get(uids, "photo", null); IEnumerable <VkProfile> vkProfiles1 = vkProfiles; if (vkProfiles1 == null) { userProfile = null; } else { VkProfile vkProfile = vkProfiles1.First <VkProfile>(); UserProfile str = new UserProfile(); Int64 id = vkProfile.Id; str.Uid = id.ToString(); str.FirstName = vkProfile.FirstName; str.LastName = vkProfile.LastName; str.Photo = vkProfile.Photo; userProfile = str; } } else { userProfile = null; } return(userProfile); }
public async Task <VkItemsResponse <VkWallEntry> > Get(long ownerId, string filter, int count = 0, int offset = 0) { var parameters = new Dictionary <string, string>(); if (ownerId != 0) { parameters.Add("owner_id", ownerId.ToString()); } if (!string.IsNullOrEmpty(filter)) { parameters.Add("filter", filter); } if (count > 0) { parameters.Add("count", count.ToString()); } if (offset > 0) { parameters.Add("offset", offset.ToString()); } parameters.Add("extended", "1"); _vkontakte.SignMethod(parameters); var response = await VkRequest.GetAsync(VkConst.MethodBase + "wall.get", parameters); if (response.SelectToken("response.items") != null) { var result = new VkItemsResponse <VkWallEntry>(); result.Items = (from p in response["response"]["items"] where p.HasValues select VkWallEntry.FromJson(p)).ToList(); result.TotalCount = response["response"]["count"].Value <int>(); if (response["response"]["profiles"] != null) { var users = (from n in response["response"]["profiles"] select VkProfile.FromJson(n)).ToList(); foreach (var entry in result.Items) { entry.Author = users.FirstOrDefault(u => u.Id == entry.SourceId); } } if (response["response"]["groups"] != null) { var groups = (from n in response["response"]["groups"] select VkGroup.FromJson(n)).ToList(); foreach (var entry in result.Items.Where(e => e.Author == null)) { entry.Author = groups.FirstOrDefault(g => g.Id == Math.Abs(entry.SourceId)); } } return(result); } return(null); }
public User(VkProfile profile) { if (profile == null) { Debugger.Break(); } _profile = profile; }
public async Task <VkItemsResponse <VkWallEntry> > GetPosts(int count = 0, int offset = 0, bool extended = true) { if (_vkontakte.AccessToken == null || string.IsNullOrEmpty(_vkontakte.AccessToken.Token) || _vkontakte.AccessToken.HasExpired) { throw new Exception("Access token is not valid."); } var parameters = new Dictionary <string, string>(); if (count > 0) { parameters.Add("count", count.ToString()); } if (offset > 0) { parameters.Add("offset", offset.ToString()); } if (extended) { parameters.Add("extended", "1"); } _vkontakte.SignMethod(parameters); var response = await new VkRequest(new Uri(VkConst.MethodBase + "fave.getPosts"), parameters).Execute(); VkErrorProcessor.ProcessError(response); if (response.SelectToken("response.items") != null) { var result = new VkItemsResponse <VkWallEntry>((from n in response["response"]["items"] select VkWallEntry.FromJson(n)).ToList()); if (response["response"]["profiles"] != null) { var users = (from n in response["response"]["profiles"] select VkProfile.FromJson(n)).ToList(); foreach (var entry in result.Items) { entry.Author = users.FirstOrDefault(u => u.Id == entry.SourceId); } } if (response["response"]["groups"] != null) { var groups = (from n in response["response"]["groups"] select VkGroup.FromJson(n)).ToList(); foreach (var entry in result.Items.Where(e => e.Author == null)) { entry.Author = groups.FirstOrDefault(g => g.Id == Math.Abs(entry.SourceId)); } } return(result); } return(null); }
internal static VkCatalogBlock FromJson(JToken json) { if (json == null) { throw new ArgumentException("Json can not be null."); } var result = new VkCatalogBlock(); result.Id = json["id"].Value <int>(); result.Title = json["title"].Value <string>(); result.Subtitle = json["subtitle"].Value <string>(); result.Type = json["type"].Value <string>(); result.Count = json["count"].Value <int>(); result.Source = json["source"].Value <string>(); if (json["audios"] != null) { result.Audios = json["audios"].Select(VkAudio.FromJson).ToList(); } if (json["thumbs"] != null) { result.Thumbs = json["thumbs"].ToObject <List <VkThumb> >(); } if (json["owners"] != null) { result.Owners = json["owners"].Select(x => { if (x["type"].Value <string>() != "profile") { return((VkProfileBase)VkGroup.FromJson(x)); } else { return((VkProfileBase)VkProfile.FromJson(x)); } }).ToList(); } if (json["playlists"] != null) { result.Playlists = json["playlists"].Select(VkPlaylist.FromJson).ToList(); } if (json["extended_playlists"] != null) { result.ExtendedPlaylists = json["extended_playlists"].Select(VkExtendedPlaylist.FromJson).ToList(); } return(result); }
private async void LoadCurrentUser() { try { CurrentUser = await ServiceLocator.Vkontakte.Users.Get(AppSettings.AccessToken.UserId, "photo,photo_100"); } catch (Exception ex) { //LoggingService.Log(ex); Debug.WriteLine(ex); } }
private async void LoadCurrentUser() { try { var service = Ioc.Resolve <VkUserService>(); CurrentUser = await service.GetUser(); } catch (Exception ex) { Logger.Error(ex, "Unable to load current user"); } }
public async Task <VkItemsResponse <VkWallEntry> > GetPosts(int count = 0, int offset = 0, bool extended = true) { var parameters = new Dictionary <string, string>(); if (count > 0) { parameters.Add("count", count.ToString()); } if (offset > 0) { parameters.Add("offset", offset.ToString()); } if (extended) { parameters.Add("extended", "1"); } _vkontakte.SignMethod(parameters); var response = await VkRequest.GetAsync(VkConst.MethodBase + "fave.getPosts", parameters); if (response.SelectToken("response.items") != null) { var result = new VkItemsResponse <VkWallEntry>((from n in response["response"]["items"] select VkWallEntry.FromJson(n)).ToList()); if (response["response"]["profiles"] != null) { var users = (from n in response["response"]["profiles"] select VkProfile.FromJson(n)).ToList(); foreach (var entry in result.Items) { entry.Author = users.FirstOrDefault(u => u.Id == entry.SourceId); } } if (response["response"]["groups"] != null) { var groups = (from n in response["response"]["groups"] select VkGroup.FromJson(n)).ToList(); foreach (var entry in result.Items.Where(e => e.Author == null)) { entry.Author = groups.FirstOrDefault(g => g.Id == Math.Abs(entry.SourceId)); } } return(result); } return(null); }
public async Task <List <VkProfile> > GetUsersAndGroupsById(IEnumerable <string> userIds, IEnumerable <string> groupIds = null, string fields = null, string nameCase = null) { var parameters = new Dictionary <string, string>(); if (userIds != null) { parameters.Add("user_ids", string.Join(",", userIds)); } if (groupIds != null) { parameters.Add("group_ids", string.Join(",", groupIds)); } if (!string.IsNullOrWhiteSpace(fields)) { parameters.Add("fields", fields); } if (!string.IsNullOrWhiteSpace(nameCase)) { parameters.Add("name_case", nameCase); } _vkontakte.SignMethod(parameters); var response = await VkRequest.GetAsync(VkConst.MethodBase + "execute.getUsersAndGroupsById", parameters); if (response["response"] != null) { var result = new List <VkProfile>(); var usersToken = response.SelectToken("response.users"); if (usersToken != null) { result.AddRange((from u in usersToken select VkProfile.FromJson(u)).ToList()); } var gruopsToken = response.SelectToken("response.groups"); if (gruopsToken != null) { result.AddRange((from u in gruopsToken select VkProfile.FromJson(u)).ToList()); } return(result); } return(new List <VkProfile>()); }
private async Task <List <Message> > LoadMoreMessages(CancellationToken token, uint count) { try { bool isChat = Dialog.Message.ChatId != 0; var vkMessages = await ServiceLocator.Vkontakte.Execute.GetChatHistoryAndMarkAsRead(!isChat?Dialog.User.Profile.Id : 0, chatId : isChat?Dialog.Message.ChatId : 0, count : (int)count, offset : Messages.Count, markAsRead : !AppSettings.DontMarkMessagesAsRead); if (!vkMessages.Items.IsNullOrEmpty()) { TaskFinished("history"); //таска может быть активна, тогда LoadingIndicator будет накладываться на список _hasUnreadMessages = true; return(vkMessages.Items.Select(m => { VkProfile sender = null; if (!isChat) { sender = !m.IsOut ? Dialog.User.Profile : null; } else { sender = Dialog.Users?.FirstOrDefault(u => u.Id == m.UserId); } return new Message(m, sender); }).ToList()); } } catch (VkInvalidTokenException) { Messenger.Default.Send(new LoginStateChangedMessage() { IsLoggedIn = false }); Navigator.Main.Navigate(typeof(LoginView), clearHistory: true); } catch (Exception ex) { Logger.Error(ex, "Unable to load more messages in coversation"); } return(null); }
private void OnMessageUserAuthChanged(MessageUserAuthChanged message) { if (message.IsLoggedIn) { LoadCurrentUser(); } else { if (AppState.VkToken == null) //if we already logged out, do nothing { return; } CurrentUser = null; AppState.Reset(); App.Current.NavigationService.Navigate(typeof(LoginView), clearHistory: true); } }
public static string FormatUserLastSeen(VkProfile user) { var date = user.LastSeen; var hours = (DateTime.Now.ToUniversalTime() - date).TotalHours; var days = (DateTime.Now.ToUniversalTime() - date).TotalDays; var result = (user.Sex == VkSex.Female ? Localizator.String("UserStatusLastSeenFemale") : Localizator.String("UserStatusLastSeenMale")) + " "; if (date.Date == DateTime.Now.ToUniversalTime().Date) { result += Localizator.String("UserStatusLastSeenToday") + " " + date.ToString("t"); } else if ((DateTime.Today - date.Date) == TimeSpan.FromDays(1)) { result += Localizator.String("UserStatusLastSeenYesterday") + " " + date.ToString("t"); } else { result += date.ToString(CultureInfo.CurrentUICulture.TwoLetterISOLanguageName == "ru" ? "dd.MM" : "MM/dd"); } return(result); }
private void OnLoginStateChanged(LoginStateChangedMessage message) { if (message.IsLoggedIn) { //PushHelper.Start(); //InitializeLongPoll(); LoadCurrentUser(); try { ServiceLocator.Vkontakte.Stats.TrackVisitor(); } catch { } } else { ServiceLocator.LongPollHandler.Stop(); PushHelper.Stop(); AppSettings.AccessToken = null; ServiceLocator.Vkontakte.AccessToken = null; CurrentUser = null; } }
private async void Load() { var t = TaskStarted("history"); try { bool isChat = Dialog.Message.ChatId != 0; if (isChat) { var users = await ServiceLocator.UserService.GetChatUsers(Dialog.Message.ChatId); Dialog.Users = users; if (Dialog.Users == null) { Dialog.Users = new List <VkProfile>(); } if (!Dialog.Users.Contains(ViewModelLocator.Main.CurrentUser)) { Dialog.Users.Add(ViewModelLocator.Main.CurrentUser); } } var vkMessages = await ServiceLocator.Vkontakte.Execute.GetChatHistoryAndMarkAsRead(!isChat?Dialog.User.Profile.Id : 0, chatId : isChat?Dialog.Message.ChatId : 0, count : DeviceHelper.IsMobile()? 20 : 50, markAsRead : !AppSettings.DontMarkMessagesAsRead); if (!vkMessages.Items.IsNullOrEmpty()) { if (isChat) { var userIds = vkMessages.Items.Where(m => !Dialog.Users.Any(u => m.UserId == u.Id)).Select(m => m.UserId).ToList(); var users = await ServiceLocator.UserService.GetById(userIds); if (!users.IsNullOrEmpty()) { Dialog.Users.AddRange(users); } } Messages.AddRange(vkMessages.Items.Select(m => { VkProfile sender = null; if (!isChat) { sender = !m.IsOut ? Dialog.User.Profile : null; } else { sender = Dialog.Users?.FirstOrDefault(u => u.Id == m.UserId); } return(new Message(m, sender)); }).Reverse().ToList()); _totalCount = vkMessages.TotalCount; //Messages.OnMoreItemsRequested = LoadMoreMessages; //Messages.HasMoreItemsRequested = () => _totalCount > Messages.Count; } } catch (VkInvalidTokenException) { Messenger.Default.Send(new LoginStateChangedMessage() { IsLoggedIn = false }); Navigator.Main.Navigate(typeof(LoginView), clearHistory: true); } catch (Exception ex) { Logger.Error(ex, "Unable to load messages in coversation"); t.Error = Localizator.String("Errors/ChatHistoryCommonError"); } t.IsWorking = false; }
public async Task <IEnumerable <VkProfile> > Get(string uid, string fields, string nameCase, int count, int offset, bool sortByRating = true) { Dictionary <string, string> dictionary = new Dictionary <string, string>(); if (!string.IsNullOrEmpty(uid)) { dictionary.Add("uid", uid); } if (!string.IsNullOrWhiteSpace(fields)) { dictionary.Add("fields", fields); } if (!string.IsNullOrWhiteSpace(nameCase)) { dictionary.Add("name_case", nameCase); } if (count > 0) { dictionary.Add("count", count.ToString()); } if (offset > 0) { dictionary.Add("offset", offset.ToString()); } if (sortByRating) { dictionary.Add("order", "hints"); } dictionary.Add("access_token", Vkontakte.Instance.AccessToken.Token); JObject jObject = await new VkRequest(new Uri("https://api.vk.com/method/friends.get"), dictionary, "GET").Execute(); VkErrorProcessor.ProcessError(jObject); IEnumerable <VkProfile> result; if (jObject["response"].HasValues) { result = Enumerable.Select <JToken, VkProfile>(jObject["response"], (JToken u) => VkProfile.FromJson(u)); } else { result = null; } return(result); }
public async Task <UserProfile> GetUserProfile(string userid = null) { UserProfile userProfile; String[] userId; if (ViewModelLocator.AuthService.IsLoggedInVk(true)) { if (userid == null) { userId = new String[] { this._vkontakte.AccessToken.UserId }; } else { userId = new string[] { userid }; } IEnumerable <VkProfile> vkProfiles = await this._vkontakte.Users.Get(userId, "bdate,photo,photo_medium,photo_big,city,education,country,schools", null); IEnumerable <VkProfile> vkProfiles1 = vkProfiles; if (vkProfiles1 == null) { userProfile = null; } else { VkProfile vkProfile = vkProfiles1.First <VkProfile>(); UserProfile str = new UserProfile(); Int64 id = vkProfile.Id; str.Uid = id.ToString(); str.FirstName = vkProfile.FirstName; str.LastName = vkProfile.LastName; str.Photo = vkProfile.Photo; str.PhotoBig = vkProfile.PhotoBig; str.PhotoMedium = vkProfile.PhotoMedium; str.UniversityName = vkProfile.Education; if (!(String.IsNullOrEmpty(vkProfile.City) || vkProfile.City == "0")) { IEnumerable <VkCity> citiesRes = await this._vkontakte.City.Get(new string[] { vkProfile.City }); if (citiesRes.Any()) { str.City = citiesRes.First().Name; } } if (!(String.IsNullOrEmpty(vkProfile.Country) || vkProfile.Country == "0")) { IEnumerable <VkCountry> countryRes = await this._vkontakte.Country.Get(new string[] { vkProfile.Country }); if (countryRes.Any()) { str.Country = countryRes.First().Name; } } if (!String.IsNullOrEmpty(vkProfile.Birthday)) { str.BirthDate = String.Empty; string[] dateElements = vkProfile.Birthday.Split(new Char[] { '.' }); if (!String.IsNullOrEmpty(dateElements[1])) { switch (dateElements[1]) { case "1": dateElements[1] = "января"; break; case "2": dateElements[1] = "фервраля"; break; case "3": dateElements[1] = "марта"; break; case "4": dateElements[1] = "апреля"; break; case "5": dateElements[1] = "мая"; break; case "6": dateElements[1] = "июня"; break; case "7": dateElements[1] = "июля"; break; case "8": dateElements[1] = "августа"; break; case "9": dateElements[1] = "сентября"; break; case "10": dateElements[1] = "октября"; break; case "11": dateElements[1] = "ноября"; break; case "12": dateElements[1] = "декабря"; break; default: break; } } if (dateElements.Length == 3) { str.BirthDate = dateElements[0] + " " + dateElements[1] + " " + dateElements[2]; } else if (dateElements.Length == 2) { str.BirthDate = dateElements[0] + " " + dateElements[1]; } } userProfile = str; } } else { userProfile = null; } return(userProfile); }
public Message(VkMessage message, VkProfile sender) { MessageContent = message; Sender = sender; }